Common Add dynamic data
Common_AddDynamicData_VBNet\PartialPostback_RegisterScriptBlock.aspx.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
Public Partial Class PartialPostback_RegisterScriptBlock
  Inherits System.Web.UI.Page
  #Region "Instance Variable Declarations"

  Private m_CheckBoxId As String = String.Empty
  Private Const AGSLocalName As String = "AGSLocalMapResource"
  Private Const AGSInternetName As String = "AGSInternetMapResource"
  Private Const IMSName As String = "IMSMapResource"

  #End Region

  #Region "ASP.NET Web Control Event Handlers"

  Public Sub CheckBoxList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    ' Declare the variable to hold the callback response
    Dim callbackResult As String = String.Empty

    Try
      ' Get a reference to CheckBoxList1 by casting the sender parameter to CheckBoxList
      Dim checkBoxList As System.Web.UI.WebControls.CheckBoxList = CType(sender, System.Web.UI.WebControls.CheckBoxList)

      ' Declare a list object to hold the list of visible map resources
      Dim visibleResourceList As System.Collections.Generic.List(Of String)
      ' Check whether the visible resource list exists in the session variables
      If Session("visibleResources") Is Nothing Then
        ' The visible resource list isn't among the session variables, so instantiate a
        ' new list object and assign it to visibleResourceList.
        visibleResourceList = New System.Collections.Generic.List(Of String)()
      Else
        ' Assign the visible resource list session variable to visibleResourceList
        visibleResourceList = CType(Session("visibleResources"), System.Collections.Generic.List(Of String))
      End If

      ' Iterate through the checkbox list items and add/remove a map resource based
      ' on which item's selected state disagrees with the visibleResourceList
      Dim i As Integer = 0
      Do While i < checkBoxList.Items.Count
        ' Get a reference to the current list item
        Dim listItem As System.Web.UI.WebControls.ListItem = checkBoxList.Items(i)
        ' Check whether the item's selected property matches whether it is 
        ' contained in the list of visible resources.  If the item is selected
        ' but not in the visible resource list, then the corresponding resource
        ' needs to be added to the map.  If the item is in the visible resource
        ' list but not selected, then the corresponding resource needs to be
        ' removed from the map.
        If listItem.Selected <> visibleResourceList.Contains(listItem.Text) Then
          Dim resourceName As String = String.Empty
          ' Assign the resource name variable based on the text of the current list item
          Select Case listItem.Text
            Case "ArcGIS Server Local"
              resourceName = AGSLocalName
            Case "ArcGIS Server Internet"
              resourceName = AGSInternetName
            Case "ArcIMS"
              resourceName = IMSName
          End Select
          ' Call the MapResourceChange method, which adds/removes
          ' resources to/from the map
          callbackResult = AddOrRemoveMapResource(resourceName, listItem.Selected)

          ' Modify the list of visible resources so that it is in sync
          ' with which resources are visible on the map
          If visibleResourceList.Contains(listItem.Text) Then
            visibleResourceList.Remove(listItem.Text)
          Else
            visibleResourceList.Add(listItem.Text)
          End If

          ' The checked item has been found and action taken accordingly,
          ' so we can exit the loop iterating through the CheckBoxList items
          Exit Do
        End If
        i += 1
      Loop

      ' Update the visible resource list session variable
      Session("visibleResources") = visibleResourceList
    Catch exception As System.Exception
      Dim errorCallbackResult As ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult = ErrorHandling.GetErrorCallback(exception)
      Map1.CallbackResults.Add(errorCallbackResult)
      callbackResult = Map1.CallbackResults.ToString()
    End Try

    ' Construct the JavaScript necessary to process the callback results generated by
    ' adding/removing a resource to/from the map.  Note that we need to modify the
    ' escape sequencing on the default callback results string for the script to execute
    ' properly, hence the call to Replace on callbackResponse.
        Dim jsProcessCallbackResult As String = String.Format("ESRI.ADF.System.processCallbackResult('{0}');", callbackResult.Replace("\", "\\"))
    ' Register the call to processCallbackResult as a script on the client.
    System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, sender.GetType(), "updateResources", jsProcessCallbackResult, True)
  End Sub

  #End Region

  #Region "Instance Methods"

  Private Function AddOrRemoveMapResource(ByVal resourceName As String, ByVal isChecked As Boolean) As String
    Try
      Dim mapResourceItemCollection As ESRI.ArcGIS.ADF.Web.UI.WebControls.GISResourceItemCollection(Of  ESRI.ArcGIS.ADF.Web.UI.WebControls.MapResourceItem) = MapResourceManager1.ResourceItems
      Dim mapResourceItem As ESRI.ArcGIS.ADF.Web.UI.WebControls.MapResourceItem = Nothing

      ' Get current resource item count to determine if the primary map resource needs to be set.
      Dim mapResourceCount As Integer = mapResourceItemCollection.Count

      ' If checked, add the resource.  If unchecked, remove the resource.
      If (Not isChecked) Then
        mapResourceItem = mapResourceItemCollection.Find(resourceName)
        mapResourceItemCollection.Remove(mapResourceItem)
        Map1.Refresh()
      Else
        mapResourceItem = New ESRI.ArcGIS.ADF.Web.UI.WebControls.MapResourceItem()

        ' Map resource items consist of a definition and display settings.  The definition 
        ' will define the data source and resource parameters.  Display settings will define
        ' map image properties and retrieval types. 
        Dim gisResourceItemDefinition As ESRI.ArcGIS.ADF.Web.UI.WebControls.GISResourceItemDefinition = New ESRI.ArcGIS.ADF.Web.UI.WebControls.GISResourceItemDefinition()

        ' Check the name of the resource corresponding to the checkbox checked and initialize
        ' the resource definition accordingly
        Select Case resourceName
          Case (AGSLocalName)
            gisResourceItemDefinition.DataSourceDefinition = "localhost"
            gisResourceItemDefinition.DataSourceType = "ArcGIS Server Local"
                        gisResourceItemDefinition.ResourceDefinition = "Layers@USA"
          Case (AGSInternetName)
                        gisResourceItemDefinition.DataSourceDefinition = "http://serverapps.esri.com/arcgis/services/"
            gisResourceItemDefinition.DataSourceType = "ArcGIS Server Internet"
                        gisResourceItemDefinition.ResourceDefinition = "Layers@SamplesNet/NorthAmerica"
          Case (IMSName)
            gisResourceItemDefinition.ResourceDefinition = "states"
            gisResourceItemDefinition.DataSourceDefinition = "localhost@5300"
            gisResourceItemDefinition.DataSourceType = "ArcIMS"
        End Select



        ' Associate the resource item definition with a map resource item
        mapResourceItem.Definition = gisResourceItemDefinition
        ' Set the resource item's name to the passed-in resource name
        mapResourceItem.Name = resourceName

        ' Initialize display settings
        Dim displaySettings As ESRI.ArcGIS.ADF.Web.DisplaySettings = New ESRI.ArcGIS.ADF.Web.DisplaySettings()
        displaySettings.Transparency = 50.0F
        displaySettings.Visible = True
        displaySettings.ImageDescriptor.ImageFormat = ESRI.ArcGIS.ADF.Web.ImageFormat.PNG8
        displaySettings.ImageDescriptor.TransparentBackground = True
        displaySettings.ImageDescriptor.TransparentColor = System.Drawing.Color.White
        displaySettings.ImageDescriptor.ReturnMimeData = False

        ' Associate the map resource with the display settings
        mapResourceItem.DisplaySettings = displaySettings

        ' Insert the new resource item at the beginning (top). 
        MapResourceManager1.ResourceItems.Insert(0, mapResourceItem)
        mapResourceItem.InitializeResource()

        ' Make sure that the resource item initialized properly.  Call the 
        ' GetResourceInitFailureCallback error handling method if the resource item
        ' did not initialize.
        If mapResourceItem.FailedToInitialize Then
          Dim exceptionMessage As String = mapResourceItem.InitializationFailure.Message
          Return ErrorHandling.GetResourceInitFailureCallback(exceptionMessage, m_CheckBoxId)
        End If
      End If

      ' Refresh the Toc and add to Map's callback result collection.
      Toc1.Refresh()
      Map1.CallbackResults.CopyFrom(Toc1.CallbackResults)
    Catch exception As System.Exception
      Dim errorCallbackResult As ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult = ErrorHandling.GetErrorCallback(exception)
      Map1.CallbackResults.Add(errorCallbackResult)
    End Try

    ' Return the Map's collection of callback results as a string 
    Return Map1.CallbackResults.ToString()
  End Function

  #End Region
End Class