Common Simple UserControlTask
Common_SimpleUserControlTask_VBNET\UserControlTasks\SimpleTask\SimpleTask.ascx.vb
' 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.
' 

Imports Microsoft.VisualBasic
Imports System
Imports System.Data
Imports System.Configuration
Imports System.Collections
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Web.UI.HtmlControls
Imports ESRI.ArcGIS.ADF.Web.UI.WebControls

'Derive from UserControlTaskPanel
Partial Public Class SimpleTask
  Inherits UserControlTaskPanel
  Protected Overrides Sub OnLoad(ByVal e As EventArgs)
  'protected void Page_Load(object sender, System.EventArgs eventArgs)
'    #Region "Populate UI from task's configuration settings"
    MyBase.OnLoad(e)
    If ScriptManager.GetCurrent(Page) IsNot Nothing Then
      Dim scriptManager As System.Web.UI.ScriptManager = System.Web.UI.ScriptManager.GetCurrent(Me.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 (Not ScriptManager.GetCurrent(Page).IsInAsyncPostBack) Then
        If Me.UserControlTask IsNot Nothing Then
          If (Not String.IsNullOrEmpty(Me.UserControlTask.Configuration)) Then
            FromJsonstring(Me.UserControlTask.Configuration)
          End If
        End If
      End If
    End If
'    #End Region
  End Sub

  'Read of the configuration by parsing JSON string
  Public Sub FromJsonstring(ByVal json As String)
    If String.IsNullOrEmpty(json) Then
      Return
    End If

    Dim xmlhelper As New ESRI.ArcGIS.ADF.XmlHelper()
    Dim decoded As String = xmlhelper.Decode(json)

    Dim jss As New System.Web.Script.Serialization.JavaScriptSerializer()
    Dim deserilizedjson As System.Collections.Generic.IDictionary(Of String, Object) = TryCast(jss.DeserializeObject(decoded), System.Collections.Generic.IDictionary(Of String, Object))
    'set the textbox value by reading the json string from configuration
    If deserilizedjson.ContainsKey("textboxvalue") Then
      TextBox1.Text = TryCast(deserilizedjson("textboxvalue"), String)
    End If
    If deserilizedjson.ContainsKey("color") Then
      UserControlTask.BackColor = System.Drawing.ColorTranslator.FromHtml(TryCast(deserilizedjson("color"), String))
    End If
    Return

  End Sub

  #Region "Executing the task"
  Protected Sub execute_Clicked(ByVal sender As Object, ByVal args As EventArgs)
    MyBase.Start(TextBox1.Text)
  End Sub
  #End Region

  #Region "UserControlTaskPanel Overrides - ExecuteTask"
  Public Overrides Function ExecuteTask(ByVal parameters As Object) As Object
    Dim textBoxValue As String = TryCast(parameters, String)

    System.Threading.Thread.Sleep(500) 'make it look like we're doing some work - ONLY for demo purposes!

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

    Dim result As New ESRI.ArcGIS.ADF.Web.UI.WebControls.SimpleTaskResult(heading, detail)
    Return result
  End Function
  #End Region
End Class