Rank: Member Groups: Member
Joined: 11/9/2007 Posts: 15
|
Within my control. Ascx a treeview I want to update without the postback to make the whole page. Full two lists and what apartir selected in the second list box add nodes to a group of treeview
my button <input id="Button1" type="button" value="button" onclick="return Ejecutar()" /><br />
//Function of javascript function Ejecutar() { var message = 'Ejecutar'; var context = 'Map1'; //this variable is for update other control <%=CallbackBotonEjecutar%> }
...Treeview1.......
this code is of source
the codeBehind is next... Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
If eventArgument.Contains("Ejecutar") Then LLenaxOrganismo(TreeView1.Nodes.Item(1))
End If End Sub
Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult Return _callbackArg End Function
Private Sub LLenaxOrganismo(ByVal nodePadre As EO.Web.TreeNode) con.ConnectionString = "Data Source=0.0.0.0;persist security info=True;Initial Catalog=database;User ID=user;password=psw" con.Open() Try Dim cmd As SqlCommand = con.CreateCommand cmd.CommandText = "spOrganismo" cmd.Parameters.AddWithValue("@Organismo", ddlCriterio.Text) 'this ddlcriterio is a dropdonwlist to choose option text cmd.CommandType = Data.CommandType.StoredProcedure Dim da As New SqlDataAdapter(cmd) Dim ds As New Data.DataSet da.Fill(ds) Dim dataViewHijos As Data.DataView dataViewHijos = New Data.DataView(ds.Tables(0)) TreeView1.DataSource = ds If TreeView1.Nodes.Item(1).SubGroup.Nodes.Item(0).Text = "Ductos" Then For Each dataRowCurrent As Data.DataRowView In dataViewHijos Dim nuevoNodo As New TreeNode nuevoNodo.Text = dataRowCurrent("Ducto").ToString() If nodePadre Is Nothing Then TreeView1.Nodes.Add(nuevoNodo.Text) Else TreeView1.Nodes.Item(1).SubGroup.Nodes.Item(0).SubGroup.Nodes.Add (nuevoNodo.Text) End If Next dataRowCurrent End If Catch sqlEx As SqlException 'MsgBox(sqlEx.Message) Catch ex As Exception 'MsgBox(ex.Message) End Try If con.State = Data.ConnectionState.Open Then con.Close() End If 'm_map is a control for a map m_map.CallbackResults.Add(RefreshControlHtml(TreeView1)) _callbackArg = m_map.CallbackResults.ToString End Sub
'whit this function refresh my ASP controls correctly Private Function RefreshControlHtml(ByVal control As Control) As ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult Dim sw As System.IO.StringWriter = New System.IO.StringWriter() Dim writer As HtmlTextWriter = New HtmlTextWriter(sw) control.RenderControl(writer) 'here send error 'Referencia a objeto no establecida como instancia de un objeto. Dim htmlContent As String = sw.ToString() sw.Close() Return New ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult(control, "content", htmlContent) End Function
thanks for help me!!!!!
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi Rafo, You over complicated it a bit. The easiest way is to put the TreeView into a CallbackPanel, set the TreeView's RaisesServerEvent to true and also set it as a Trigger of the panel and you will be all set. See here for more details: http://www.essentialobjects.com/ViewDoc.aspx?t=Callback%2fwalkthru_productInfo.htmlOur demo project uses CallbackPanel extensively. You can try to load the source code and see how it works. It's very easy to use. Thanks
|
Rank: Member Groups: Member
Joined: 11/9/2007 Posts: 15
|
Thanks for your answer, now my Treeview execute correctly whit callback
|