Common Simple UserControlTask
Common_SimpleUserControlTask_CSharp\UserControlTasks\SimpleTask\SimpleTask.ascx.cs
// Copyright 2010 ESRI
// 
// All rights reserved under the copyright laws of the United States
// and applicable international laws, treaties, and conventions.
// 
// You may freely redistribute and use this sample code, with or
// without modification, provided you include the original copyright
// notice and use restrictions.
// 
// See the use restrictions.
// 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using ESRI.ArcGIS.ADF.Web.UI.WebControls;

//Derive from UserControlTaskPanel
public partial class SimpleTask : UserControlTaskPanel
{
    protected override void OnLoad(EventArgs e)
    //protected void Page_Load(object sender, System.EventArgs eventArgs)
    {
        #region Populate UI from task's configuration settings
        base.OnLoad(e);
        if (ScriptManager.GetCurrent(Page) != null ) 
        {
            System.Web.UI.ScriptManager scriptManager = System.Web.UI.ScriptManager.GetCurrent(this.Page);

            // Register the ASP.NET Button so it triggers a partial postback when clicked.  Note that this
            // does not need to be done for the Web ADF Callback Button.  This is because all Web ADF
            // controls are AJAX-enabled, so asynchronous functionality has been wired-up for the callback 
            // button automatically.
            scriptManager.RegisterAsyncPostBackControl(AspButton);

            if (!ScriptManager.GetCurrent(Page).IsInAsyncPostBack)
            {
                if (this.UserControlTask != null)
                {
                    if (!string.IsNullOrEmpty(this.UserControlTask.Configuration))
                        FromJsonstring(this.UserControlTask.Configuration);
                }
            }
        }
        #endregion
    }

    //Read of the configuration by parsing JSON string
    public void FromJsonstring(string json)
    {
        if (string.IsNullOrEmpty(json))
            return;

        ESRI.ArcGIS.ADF.XmlHelper xmlhelper = new ESRI.ArcGIS.ADF.XmlHelper();
        string decoded = xmlhelper.Decode(json);

        System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
        System.Collections.Generic.IDictionary<string, object> deserilizedjson = jss.DeserializeObject(decoded) as System.Collections.Generic.IDictionary<string, object>;
        //set the textbox value by reading the json string from configuration
        if (deserilizedjson.ContainsKey("textboxvalue"))
            TextBox1.Text = deserilizedjson["textboxvalue"] as string;
        if (deserilizedjson.ContainsKey("color"))
            UserControlTask.BackColor = System.Drawing.ColorTranslator.FromHtml(deserilizedjson["color"] as string);
        return; 
       
    }

    #region Executing the task
    protected void execute_Clicked(object sender, EventArgs args)
    {
        base.Start(TextBox1.Text);
    }
    #endregion

    #region UserControlTaskPanel Overrides - ExecuteTask
    public override object ExecuteTask(object parameters)
    {
        string textBoxValue = parameters as string;

        DateTime now = DateTime.Now;
        string heading = string.Format("The time on the server is {0}:{1:d2}:{2:d2}", now.Hour, now.Minute, now.Second);
        string detail = string.Format("The value in the text box is: {0}", textBoxValue);

        ESRI.ArcGIS.ADF.Web.UI.WebControls.SimpleTaskResult result = new ESRI.ArcGIS.ADF.Web.UI.WebControls.SimpleTaskResult(heading, detail);
        return result;
    }
    #endregion
}