Hi telerik gurus ... i'm almost new to this components and i'm learning a lot
i'll try to explain my problem in the easiest way possible
background
the problem is in the Radgrid with RadioButtons . in that radgrid the toolbar has 3 buttons (New, Edit and Delete) the 2 first buttons calls the RadDock. When i press the first time the new or edit button the Raddock shows and data is displayed as i want but when close the dock and try to do the same operation the dock is not displayed aparently the second and successive times that i press button ; the event generate 2 AjaxRequest for each button (one the both aborted by the later one) and thats generate the problem
the first time i press the buttons only do 1 Ajax Request.
I'm glad to provide more information if needed
VB code behind
ASPX:
a bit complex ;)
i'll try to explain my problem in the easiest way possible
background
- all code in grids are execution-time and the structure and declaration in Page_init method (zero design-mode)
- using masterpage / contentpage and using an ajaxmanager
- i'm using 2 grids in a multipage control (one using a checkbox template row, and the another using radiobutton as template row) both of them using a radtoolbar inserted in the grid
- in the radiobutton's one is ajaxified and i'm using a RadDock to simulate an external edit of my row (the later one inserted into a ajaxpanel)
- i'm using javascript to manage my radiobuttons and to display the RadDock
the problem is in the Radgrid with RadioButtons . in that radgrid the toolbar has 3 buttons (New, Edit and Delete) the 2 first buttons calls the RadDock. When i press the first time the new or edit button the Raddock shows and data is displayed as i want but when close the dock and try to do the same operation the dock is not displayed aparently the second and successive times that i press button ; the event generate 2 AjaxRequest for each button (one the both aborted by the later one) and thats generate the problem
the first time i press the buttons only do 1 Ajax Request.
I'm glad to provide more information if needed
VB code behind
Imports mnlibImports System.DataImports System.Data.OleDbImports System.IOImports adquisicionesPartial Public Class Proceso Inherits System.Web.UI.Page Protected oConn As Connection Protected oDts As DataSet Protected oProc As abProceso Protected oLSer As LosFormatter Protected WithEvents grdCalendario As Telerik.Web.UI.RadGrid Protected WithEvents grdSolpedPos As Telerik.Web.UI.RadGrid Protected WithEvents tbSol As tbGridProceso Protected WithEvents tbCal As tbGridCalendario Protected WithEvents oColChk As grdChkTemplate Protected WithEvents oColRadio As grdRadioTemplate#Region "Propiedades" Private ReadOnly Property ChkSolped() As Hashtable Get Dim res As Object = ViewState("_csp0") If (res Is Nothing) Then res = New Hashtable ViewState("_csp0") = res End If Return CType(res, Hashtable) End Get End Property Private ReadOnly Property ChkSolpedPos() As Hashtable Get Dim res As Object = ViewState("_csp1") If (res Is Nothing) Then res = New Hashtable ViewState("_csp1") = res End If Return CType(res, Hashtable) End Get End Property#End Region Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init Me.oConn = New Connection(System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")) oDts = New DataSet("datos") adquisiciones.Catalogos.getTipoProceso(oConn, oDts) adquisiciones.Catalogos.getResponsables(oConn, oDts) adquisiciones.Catalogos.getTipoSubProceso(oConn, oDts) adquisiciones.Catalogos.getRazonPrioridad(oConn, oDts) adquisiciones.Catalogos.getSolpeds(oConn, oDts) Intranet.Catalogos.getEspecialidad(oConn, oDts) '******* recreacion de la estructura en este punto es necesario segun TELERIK *********** Me.restoreSolPosCampos() Me.restoreCalCampos() Me.phGrdCal.Controls.Add(Me.grdCalendario) Me.phGrdSolPos.Controls.Add(Me.grdSolpedPos) '**************************************************************************************** End Sub Private Sub FillComponents() If Not IsNothing(oProc) Then Me.txtImporte.Text = Me.oProc.importe Me.txtNomEvento.Text = Me.oProc.concepto Me.cmbResp.SelectedValue = Me.oProc.responsable Me.cmbTipEvento.SelectedValue = Me.oProc.tipo Me.cmbPrioridad.SelectedValue = Me.oProc.prioridad Me.cmbRazon.SelectedValue = Me.oProc.razonPrioridad Me.cmbEspecialidad.SelectedValue = Me.oProc.especialidad End If End Sub Protected Sub grdLista_DetailTableDataBind(ByVal source As Object, ByVal e As Telerik.Web.UI.GridDetailTableDataBindEventArgs) Handles grdSolpedPos.DetailTableDataBind Dim a As String = "" Dim oVw As DataView Dim parentItem As Telerik.Web.UI.GridDataItem = CType(e.DetailTableView.ParentItem, Telerik.Web.UI.GridDataItem) Select Case e.DetailTableView.Name Case "SolpedPosicion" 'e.DetailTableView.DataSource = Nothing oVw = New DataView(oDts.Tables("SolpedPosicion"), " num_solped='" & parentItem.GetDataKeyValue("num_solped").ToString() & "'", "", DataViewRowState.OriginalRows) e.DetailTableView.DataSource = oVw End Select End Sub Protected Sub grdLista_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles grdSolpedPos.NeedDataSource If Not e.IsFromDetailTable Then 'restoreProcCampos() Me.grdSolpedPos.MasterTableView.DataSource = oDts.Tables("Solped") Me.grdSolpedPos.MasterTableView.Name = oDts.Tables("Solped").TableName If Not Page.IsPostBack Then restoreChkViewStateData() End If End If End Sub Protected Sub grdCalendario_CheckChanged(ByVal sender As Object, ByVal e As System.EventArgs) Dim oData As Telerik.Web.UI.GridDataItem oData = DirectCast(DirectCast(sender, RadioButton).NamingContainer, Telerik.Web.UI.GridDataItem) Me.hdnIds.Value = oData("cve_subproceso").Text.ToString() & "_" & oData("num_subproceso").Text.ToString() End Sub Private Sub restoreCalCampos() Dim oDgr As Telerik.Web.UI.GridBoundColumn Dim cont As Integer Dim bVacio As Boolean = True Dim oCTmp As Telerik.Web.UI.GridTemplateColumn Me.grdCalendario = New Telerik.Web.UI.RadGrid() Me.grdCalendario.ID = "grdCalendario" Me.grdCalendario.AllowFilteringByColumn = False Me.grdCalendario.AllowMultiRowSelection = False Me.grdCalendario.AutoGenerateColumns = False Me.grdCalendario.AllowPaging = True Me.grdCalendario.AllowSorting = True Me.grdCalendario.GridLines = GridLines.Both Me.grdCalendario.MasterTableView.CommandItemDisplay = Telerik.Web.UI.GridCommandItemDisplay.Top Me.grdCalendario.PagerStyle.Mode = Telerik.Web.UI.GridPagerMode.NextPrevAndNumeric 'Me.grdCalendario. If Me.grdCalendario.Columns.Count > 0 Then bVacio = False Else bVacio = True End If For cont = 0 To 9 If bVacio Then oDgr = New Telerik.Web.UI.GridBoundColumn() Else oDgr = Me.grdCalendario.Columns(cont) End If Select Case cont Case 0 oDgr.DataField = "num_proceso" oDgr.HeaderText = "# Proceso" oDgr.DataType = GetType(Long) oDgr.Visible = False Case 1 oDgr.DataField = "num_subproceso" oDgr.HeaderText = "# Subproceso" oDgr.DataType = GetType(Long) oDgr.Visible = False Case 2 oDgr.DataField = "cve_subproceso" oDgr.HeaderText = "Tipo SubProceso" oDgr.DataType = GetType(String) Case 3 oDgr.DataField = "titulo" oDgr.HeaderText = "Titulo" oDgr.DataType = GetType(String) Case 4 oDgr.DataField = "descripcion" oDgr.HeaderText = "Descripcion" oDgr.DataType = GetType(String) Case 5 oDgr.DataField = "fecProgIni" oDgr.HeaderText = "Inicio" oDgr.DataType = GetType(DateTime) Case 6 oDgr.DataField = "fecProgFin" oDgr.HeaderText = "Fin" oDgr.DataType = GetType(DateTime) Case 7 oDgr.DataField = "fecRealIni" oDgr.HeaderText = "Fecha Inicial(Real)" oDgr.DataType = GetType(DateTime) oDgr.Visible = False Case 8 oDgr.DataField = "fecRealFin" oDgr.HeaderText = "Fecha Final(Real)" oDgr.DataType = GetType(DateTime) oDgr.Visible = False Case 9 oDgr.DataField = "responsable" oDgr.HeaderText = "Responsable" oDgr.DataType = GetType(String) End Select If bVacio Then Me.grdCalendario.Columns.Add(oDgr) End If Next '********************* Adicion de RadioButtons *********************** '********************* Creacion RadioButtons *************************** Me.oColRadio = New grdRadioTemplate() oCTmp = New Telerik.Web.UI.GridTemplateColumn() oCTmp.ItemTemplate = Me.oColRadio oCTmp.HeaderText = "" oCTmp.UniqueName = "Rad" oCTmp.ReadOnly = False Me.grdCalendario.MasterTableView.Columns.AddAt(0, oCTmp) '******************************************************************* '************ Generar Toolbar ************* Me.tbCal = New tbGridCalendario() Me.grdCalendario.MasterTableView.CommandItemTemplate = Me.tbCal 'Me.grdCalendario.Rebind() End Sub Private Sub restoreSolPosCampos() Dim oDgr As Telerik.Web.UI.GridBoundColumn Dim oVw As Telerik.Web.UI.GridTableView Dim oGrf As Telerik.Web.UI.GridRelationFields Dim cont As Integer Dim bVacio As Boolean = True Dim oCTmp As Telerik.Web.UI.GridTemplateColumn Me.grdSolpedPos = New Telerik.Web.UI.RadGrid() Me.grdSolpedPos.ID = "grdSolpedPos" Me.grdSolpedPos.AllowFilteringByColumn = False Me.grdSolpedPos.MasterTableView.AutoGenerateColumns = False Me.grdSolpedPos.MasterTableView.CommandItemDisplay = Telerik.Web.UI.GridCommandItemDisplay.Top Me.grdSolpedPos.AllowPaging = True Me.grdSolpedPos.AllowSorting = True Me.grdSolpedPos.GridLines = GridLines.Both Me.grdSolpedPos.PagerStyle.Mode = Telerik.Web.UI.GridPagerMode.NextPrevAndNumeric 'Me.grdSolpedPos.PagerStyle.Position = Telerik.Web.UI.GridPagerPosition.TopAndBottom oVw = New Telerik.Web.UI.GridTableView() Me.grdSolpedPos.MasterTableView.Columns.Clear() For cont = 0 To 6 oDgr = New Telerik.Web.UI.GridBoundColumn() Select Case cont Case 0 oDgr.DataField = "num_solped" oDgr.HeaderText = "Solped" oDgr.DataType = GetType(Long) oDgr.ReadOnly = True Case 1 oDgr.DataField = "importe" oDgr.HeaderText = "Importe" oDgr.DataType = GetType(Double) oDgr.Visible = False oDgr.ReadOnly = True Case 2 oDgr.DataField = "concepto" oDgr.HeaderText = "Concepto" oDgr.DataType = GetType(String) oDgr.ReadOnly = True Case 3 oDgr.DataField = "creado" oDgr.HeaderText = "Creado por" oDgr.DataType = GetType(String) oDgr.ReadOnly = True Case 4 oDgr.DataField = "cve_documento" oDgr.HeaderText = "Clave Doc." oDgr.DataType = GetType(String) oDgr.ReadOnly = True oDgr.Visible = False Case 5 oDgr.DataField = "solicitante" oDgr.HeaderText = "Solicitante" oDgr.DataType = GetType(String) oDgr.ReadOnly = True Case 6 oDgr.DataField = "CentroGestor" oDgr.HeaderText = "Centro Gestor" oDgr.DataType = GetType(String) oDgr.ReadOnly = True oDgr.Visible = False End Select Me.grdSolpedPos.MasterTableView.Columns.Add(oDgr) Next '********************* Adicion de ChackBoxes *********************** '********************* Creacion CheckBox *************************** Me.oColChk = New grdChkTemplate() oCTmp = New Telerik.Web.UI.GridTemplateColumn() oCTmp.ItemTemplate = Me.oColChk oCTmp.HeaderText = "" oCTmp.UniqueName = "ChkAll" oCTmp.ReadOnly = False Me.grdSolpedPos.MasterTableView.Columns.AddAt(0, oCTmp) '******************************************************************* Me.grdSolpedPos.MasterTableView.DataKeyNames = New String() {"num_solped"} Me.grdSolpedPos.MasterTableView.HierarchyLoadMode = Telerik.Web.UI.GridChildLoadMode.ServerOnDemand Me.grdSolpedPos.MasterTableView.DetailTables.Clear() Me.grdSolpedPos.MasterTableView.EditMode = Telerik.Web.UI.GridEditMode.InPlace Me.grdSolpedPos.AllowMultiRowEdit = True oVw.DataSource = oDts.Tables("SolpedPosicion") oVw.DataKeyNames = New String() {"num_solped", "pos_solped"} oGrf = New Telerik.Web.UI.GridRelationFields() oGrf.MasterKeyField = "num_solped" oGrf.DetailKeyField = "num_solped" oVw.ParentTableRelation.Add(oGrf) oVw.Name = oDts.Tables("SolpedPosicion").TableName oVw.Columns.Clear() oVw.AutoGenerateColumns = False Me.grdSolpedPos.MasterTableView.DetailTables.Add(oVw) For cont = 0 To 6 oDgr = New Telerik.Web.UI.GridBoundColumn() Select Case cont Case 0 oDgr.DataField = "num_solped" oDgr.HeaderText = "Solped" oDgr.DataType = GetType(Long) oDgr.ReadOnly = True oDgr.Visible = False Case 1 oDgr.DataField = "pos_solped" oDgr.HeaderText = "Posicion" oDgr.DataType = GetType(Integer) oDgr.ReadOnly = True Case 2 oDgr.DataField = "pedido" oDgr.HeaderText = "pedido" oDgr.DataType = GetType(Double) oDgr.ReadOnly = True Case 3 oDgr.DataField = "creado" oDgr.HeaderText = "Creado por" oDgr.DataType = GetType(String) oDgr.ReadOnly = True oDgr.Visible = False Case 4 oDgr.DataField = "descripcion_breve" oDgr.HeaderText = "Descripcion" oDgr.DataType = GetType(String) oDgr.ReadOnly = True Case 5 oDgr.DataField = "cantidad" oDgr.HeaderText = "Cantidad" oDgr.DataType = GetType(Double) oDgr.ReadOnly = True Case 6 oDgr.DataField = "fechaSolicitud" oDgr.HeaderText = "Solicitado" oDgr.DataType = GetType(DateTime) oDgr.ReadOnly = True oDgr.Visible = False End Select Me.grdSolpedPos.MasterTableView.DetailTables(0).Columns.Add(oDgr) Next '********************* Adicion de CheckBoxes *********************** Me.oColChk = New grdChkTemplate() oCTmp = New Telerik.Web.UI.GridTemplateColumn() oCTmp.ItemTemplate = Me.oColChk oCTmp.HeaderText = "" oCTmp.UniqueName = "Chk" oCTmp.ReadOnly = False Me.grdSolpedPos.MasterTableView.DetailTables(0).Columns.AddAt(0, oCTmp) '******************************************************************* '************ Generar Toolbar ************* Me.tbSol = New tbGridProceso() Me.grdSolpedPos.MasterTableView.CommandItemTemplate = Me.tbSol End Sub Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.realoadProc() If Not Page.IsPostBack Then Me.FillComponents() Me.cmbTipEvento.DataSource = oDts.Tables("TipoProceso") Me.cmbTipEvento.DataTextField = "descripcion" Me.cmbTipEvento.DataValueField = "cve_proceso" Me.cmbTipEvento.DataBind() Me.cmbResp.DataSource = oDts.Tables("Responsable") Me.cmbResp.DataTextField = "nombrecompleto" Me.cmbResp.DataValueField = "rpe" Me.cmbResp.DataBind() Me.cmbRazon.DataSource = oDts.Tables("RazonPrioridad") Me.cmbRazon.DataTextField = "descripcion" Me.cmbRazon.DataValueField = "cve_razonPrior" Me.cmbRazon.DataBind() Me.cmbEspecialidad.DataSource = oDts.Tables("Especialidad") Me.cmbEspecialidad.DataTextField = "nombre" Me.cmbEspecialidad.DataValueField = "abreviacion" Me.cmbEspecialidad.DataBind() Me.cmbSubProceso.DataSource = oDts.Tables("TipoSubProceso") Me.cmbSubProceso.DataTextField = "descripcion" Me.cmbSubProceso.DataValueField = "cve_subproceso" Me.cmbSubProceso.DataBind() Me.cmbRespEvento.DataSource = oDts.Tables("Responsable") Me.cmbRespEvento.DataTextField = "nombrecompleto" Me.cmbRespEvento.DataValueField = "rpe" Me.cmbRespEvento.DataBind() End If If RadAjaxManager1.AjaxSettings.Count = 0 Then Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.grdCalendario) Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.RadDock1) Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.cmbSubProceso) Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.cmbRespEvento) Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.dpFecIni) Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.dpFecFin) Me.RadAjaxManager1.AjaxSettings.AddAjaxSetting(Me.grdCalendario, Me.txtSPDesc) End If End Sub Protected Sub Grid_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles grdSolpedPos.ItemCommand, grdCalendario.ItemCommand Dim oStr As String() = {"", ""} Select Case e.CommandName Case "DelSolPos" oStr(0) = e.Item.Cells(3).Text oStr(1) = e.Item.Cells(4).Text Me.oProc.Posiciones.Remove(Me.oProc.Posiciones.GetElementByName(oStr)) Me.grdSolpedPos.Rebind() Case "DelCal" oStr(0) = e.Item.Cells(4).Text oStr(1) = e.Item.Cells(3).Text Me.oProc.Calendario.Remove(Me.oProc.Calendario.GetElementByName(oStr)) Me.grdCalendario.Rebind() Case "cmdGuardar" If Not IsNothing(oConn) Then If IsNothing(Me.oProc) Then Me.oProc = New abProceso(Me.oConn.Clone()) Else Me.oProc.Conexion = Me.oConn.Clone() End If Me.oProc.importe = Me.txtImporte.Value Me.oProc.concepto = Me.txtNomEvento.Text Me.oProc.responsable = Me.cmbResp.SelectedValue 'Me.cmbRespEvento.SelectedValue = Me.cmbResp.SelectedValue Me.oProc.moneda = "MXN" Me.oProc.tipo = Me.cmbTipEvento.SelectedValue Me.oProc.razonPrioridad = Me.cmbRazon.SelectedValue Me.oProc.prioridad = Me.cmbPrioridad.SelectedValue Me.oProc.especialidad = Me.cmbEspecialidad.SelectedValue If Not IsNothing(Request.QueryString.GetValues("id")) Then If Request.QueryString("id") = oProc.numero Then Me.oProc.UpdateData() Else Me.oProc.insertData() End If Else Me.oProc.insertData() End If saveChkViewStateData() oLSer = New LosFormatter() Dim oSw As New StringWriter() oLSer.Serialize(oSw, Me.oProc) ViewState("prc" & Session("guid")) = oSw.ToString() If oTabMan.Tabs(1).Enabled = False Then oTabMan.Tabs(1).Enabled = True End If grdSolpedPos.Rebind() End If Case "cmdReset" 'If Not IsNothing() Then grdSolpedPos.Rebind() 'End If Case "cmdNew" Me.hdnAction.Value = "n" CargarEvento() ScriptManager.RegisterStartupScript(Page, [GetType](), "openForm", "Sys.Application.add_load(openForm);", True) Case "cmdEdit" Me.hdnAction.Value = "e" CargarEvento() ScriptManager.RegisterStartupScript(Page, [GetType](), "openForm", "Sys.Application.add_load(openForm);", True) Case "cmdDelete" Me.hdnAction.Value = "d" RadAjaxManager1.ResponseScripts.Add("confirm('hola','¿Desea realmente eliminar este evento?');") 'RadAjaxManager1.Alert("hola") 'ScriptManager.RegisterStartupScript(Page, [GetType](), "radalert", "window.radalert('Welcome to Rad<b>window</b>!', 330, 210);", True) End Select End Sub Protected Sub grdCalendario_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles grdCalendario.NeedDataSource Dim oVw As DataView If IsNothing(oProc) Then Me.grdCalendario.DataSource = Nothing Else adquisiciones.Catalogos.getProcesoCalendario(oConn, oDts) oVw = New DataView(oDts.Tables("ProcesoCalendario"), "num_proceso='" & Me.oProc.numero & "'", "", DataViewRowState.OriginalRows) Me.grdCalendario.DataSource = oVw End If End Sub Protected Sub realoadProc() Dim oSr As StringReader Dim oLser As New LosFormatter() If IsNothing(Me.oProc) Then If Not IsNothing(ViewState("prc" & Session("guid"))) Then oSr = New StringReader(ViewState("prc" & Session("guid"))) Me.oProc = oLser.Deserialize(oSr) Me.oProc.Conexion = oConn Else If Not IsNothing(Request.QueryString.Item("id")) Then oProc = New abProceso(oConn, CInt(Request.QueryString("id"))) Me.oTabMan.Tabs(1).Enabled = True End If End If End If End Sub Protected Sub grdSolpedPos_CheckChanged(ByVal sender As Object, ByVal e As System.EventArgs) Dim box As CheckBox = CType(sender, CheckBox) Dim item As Telerik.Web.UI.GridDataItem = CType(box.NamingContainer, Telerik.Web.UI.GridDataItem) Dim sID As String = "" Dim i As Integer Dim oSol As adquisiciones.abSolped Dim target As Hashtable = Nothing If (item.OwnerTableView.Name = "Solped") Then target = ChkSolped() sID = item.GetDataKeyValue("num_solped").ToString() Else target = ChkSolpedPos() sID = item.GetDataKeyValue("num_solped").ToString() & "_" & item.GetDataKeyValue("pos_solped").ToString() End If If box.Checked Then target(sID) = True Else target(sID) = Nothing End If ' **************** ASIGNACION DE CHECK A DESCENDIENTES *********************** If item.OwnerTableView.Name = "Solped" And box.Checked Then oSol = New adquisiciones.abSolped(Me.oConn, sID) target = ChkSolpedPos() If oSol.posiciones.Count > 0 Then For i = 0 To oSol.posiciones.Count - 1 If oSol.posiciones(i).NumeroPedido = 0 Then target(oSol.Clave & "_" & oSol.posiciones(i).PosicionSolped.ToString()) = True End If Next 'Me.grdSolpedPos End If End If 'If item.OwnerTableView.Name = "SolpedPosicion" Then ' oSol = New adquisiciones.abSolped(Me.oConn, sID) ' target = ChkSolpedPos() ' If oSol.posiciones.Count > 0 Then ' For i = 0 To oSol.posiciones.Count - 1 ' If oSol.posiciones(i).NumeroPedido = 0 Then ' target(oSol.Clave & "_" & oSol.posiciones(i).PosicionSolped.ToString()) = True ' End If ' Next ' End If 'End If End Sub Private Sub grdSolpedPos_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles grdSolpedPos.ItemDataBound If TypeOf e.Item Is Telerik.Web.UI.GridDataItem Then Dim item As Telerik.Web.UI.GridDataItem = CType(e.Item, Telerik.Web.UI.GridDataItem) Dim box As CheckBox = CType(item.FindControl("oChk"), CheckBox) Dim isChecked As Object = Nothing Select Case item.OwnerTableView.Name Case "Solped" isChecked = ChkSolped(item.GetDataKeyValue("num_solped").ToString()) Case "SolpedPosicion" isChecked = ChkSolpedPos(item.GetDataKeyValue("num_solped").ToString() & "_" & item.GetDataKeyValue("pos_solped").ToString()) End Select If Not (isChecked Is Nothing) Then box.Checked = CType(isChecked, Boolean) End If End If End Sub Private Sub oGrid_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles grdSolpedPos.ItemCreated, grdCalendario.ItemCreated If e.Item.ItemType = Telerik.Web.UI.GridItemType.Item Or e.Item.ItemType = Telerik.Web.UI.GridItemType.AlternatingItem Then Select Case sender.ID Case "grdSolpedPos" Dim oChk As CheckBox = CType(e.Item.FindControl("oChk"), CheckBox) If Not IsNothing(oChk) Then AddHandler oChk.CheckedChanged, AddressOf Me.grdSolpedPos_CheckChanged End If Case "grdCalendario" Dim oRad As RadioButton = CType(e.Item.FindControl("oRad"), RadioButton) If Not IsNothing(oRad) Then oRad.Attributes.Add("OnClick", "SelectMeOnly(" & oRad.ClientID & ", " & "'grdCalendario'" & ")") AddHandler oRad.CheckedChanged, AddressOf Me.grdCalendario_CheckChanged End If End Select End If End Sub Private Sub restoreChkViewStateData() Dim oSolP As abSolpedPosicion If Not IsNothing(Me.oProc) Then For Each oSolP In Me.oProc.Posiciones ChkSolpedPos(oSolP.NumeroSolped.ToString() & "_" & oSolP.PosicionSolped.ToString()) = True ' TODO: Implementar deteccion de check en todos cuando los todos elementos del detalle esten en true Next End If End Sub Private Sub saveChkViewStateData() Dim oSolP As abSolpedPosicion Dim oEle As DictionaryEntry Dim aId() As String If Not IsNothing(Me.oProc) Then For Each oEle In ChkSolpedPos If oEle.Value = True Then aId = oEle.Key.ToString.Split("_") oSolP = New abSolpedPosicion(Me.oConn, aId(0), aId(1)) Me.oProc.Posiciones.Add(oSolP) End If Next End If End Sub Protected Sub SubmitButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cbtnGuardar.Click Dim sID As String = "" Dim sAct As String = "" Dim aStr() As String Dim oEve As abEvento sID = Me.hdnIds.Value sAct = Me.hdnAction.Value Select Case sender.ID Case "cbtnGuardar" If sAct = "n" Then If sID.Length > 0 Then aStr = sID.Split("_") If aStr.Count = 2 Then oEve = New abEvento(oConn.Clone(), aStr(0), aStr(1)) Else Exit Sub End If Else Exit Sub End If Else oEve = New abEvento(oConn.Clone(), Me.cmbSubProceso.SelectedValue.ToString()) End If oEve.Titulo = Me.txtNomEvento.Text oEve.Descripcion = Me.txtSPDesc.Text oEve.FechaProgramadoInicial = Me.dpFecIni.SelectedDate oEve.FechaProgramadoFinal = Me.dpFecFin.SelectedDate If Me.cmbResp.SelectedValue <> Me.cmbRespEvento.SelectedValue Then oEve.Responsable = Me.cmbRespEvento.SelectedValue End If If Me.oProc.Calendario.Add(oEve) Then Me.txtSPDesc.Text = "" Me.cmbTipEvento.SelectedIndex = 0 Me.dpFecIni.SelectedDate = DateTime.Today Me.dpFecFin.SelectedDate = DateTime.Today End If 'Me.grdCalendario.Rebind() End Select End Sub Private Sub CargarEvento() Dim sSprc As String = "" Dim sAct As String = "" Dim aStr() As String Dim oEve As abEvento sSprc = Me.hdnIds.Value sAct = Me.hdnAction.Value If sAct = "e" And sSprc.Length > 0 Then aStr = sSprc.Split("_") If aStr.Length > 1 Then oEve = New abEvento(oConn, aStr(0), aStr(1)) Me.RadDock1.Title = "Editar " & oEve.Descripcion Me.txtSPDesc.Text = oEve.Descripcion Me.dpFecIni.SelectedDate = oEve.FechaProgramadoInicial Me.dpFecFin.SelectedDate = oEve.FechaProgramadoFinal Me.cmbRespEvento.SelectedValue = oEve.Responsable End If Else Me.RadDock1.Title = "Nuevo Evento" Me.txtSPDesc.Text = "" Me.dpFecIni.SelectedDate = DateTime.Today() Me.dpFecFin.SelectedDate = DateTime.Today() Me.cmbRespEvento.SelectedValue = Me.cmbResp.SelectedValue End If End SubEnd ClassASPX:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Templates/1Col.Master" CodeBehind="Proceso.aspx.vb" Inherits="adquisicioneNET.Proceso" %><asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> <link type="text/css" rel="Stylesheet" href="../Templates/dialogo.css" /></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="cuerpo" runat="server"> <telerik:RadScriptBlock runat="server" ID="RadScriptBlock2"> <script type="text/javascript"> function SelectMeOnly(objRadioButton, grdName) { var i, obj, pageElements; if (navigator.userAgent.indexOf("MSIE") != -1) { pageElements = document.all; //IE browser } else if (navigator.userAgent.indexOf("Mozilla") != -1 || navigator.userAgent.indexOf("Opera") != -1) { pageElements = document.documentElement.getElementsByTagName("input"); //FireFox/Opera browser } for (i = 0; i < pageElements.length; i++) { obj = pageElements[i]; if (obj.type == "radio") { if (objRadioButton.id.indexOf(grdName, 0) >= 0) { if (objRadioButton.id == obj.id) { obj.checked = true; } else { obj.checked = false; } } } } } function openForm() { var dock = $find("<%= RadDock1.ClientID %>"); // Center the RadDock on the screen var viewPort = $telerik.getViewPortSize(); var xPos = Math.round((viewPort.width - parseInt(dock.get_width())) / 2); var yPos = Math.round((viewPort.height ) / 2);//- parseInt(dock.get_height()) $telerik.setLocation(dock.get_element(), { x: xPos, y: yPos }); dock.set_closed(false); var descriptionTextBox = $get('<%= txtSPDesc.ClientID %>'); descriptionTextBox.focus(); Sys.Application.remove_load(openForm); } function hideForm() { var dock = $find("<%= RadDock1.ClientID %>"); Sys.Application.remove_load(openForm); dock.set_closed(true); return true; } function dockMoved(sender, args) { //Return RadDock to his original HTML parent so it gets updated via ajax $get("<%= panDlgData.ClientID %>").appendChild(sender.get_element()); } </script> </telerik:RadScriptBlock> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"></telerik:RadAjaxManager> <asp:UpdatePanel runat="server" ID="UpdPan1"> <ContentTemplate> <table> <tr> <td> Nombre del proceso: </td> <td> <asp:TextBox ID="txtNomEvento" runat="server" Width="232px"></asp:TextBox> </td> </tr> <tr> <td> Tipo de proceso: </td> <td> <telerik:RadComboBox ID="cmbTipEvento" runat="server" Width="235px" AutoPostBack="True"> </telerik:RadComboBox> </td> </tr> <tr> <td class="style1"> Responsable: </td> <td class="style1"> <telerik:RadComboBox ID="cmbResp" runat="server" Width="235px" AutoPostBack="True"> </telerik:RadComboBox> </td> </tr> <tr> <td> Importe: </td> <td> <telerik:RadNumericTextBox ID="txtImporte" runat="server" Culture="Spanish (Mexico)" Type="Currency" Width="232px"> </telerik:RadNumericTextBox> </td> </tr> <tr> <td> Prioridad: </td> <td> <telerik:RadComboBox ID="cmbPrioridad" runat="server" Width="50px"> <Items> <telerik:RadComboBoxItem runat="server" Text="A" Value="A" /> <telerik:RadComboBoxItem runat="server" Text="B" Value="B" /> <telerik:RadComboBoxItem runat="server" Selected="True" Text="C" Value="C" /> </Items> </telerik:RadComboBox> <telerik:RadComboBox ID="cmbRazon" runat="server" Width="187px"> </telerik:RadComboBox> </td> </tr> <tr> <td> Especialidad: </td> <td> <telerik:RadComboBox ID="cmbEspecialidad" runat="server" Width="235px"> </telerik:RadComboBox> </td> </tr> <tr> <td colspan="2"> <asp:HiddenField ID="hdnAction" runat="server" /> <asp:HiddenField ID="hdnIds" runat="server" /> <telerik:RadFormDecorator ID="RadFormDecorator1" runat="server" DecoratedControls="Default, Textbox, Textarea, Fieldset, Label, Select" Skin="WebBlue" /> <div class="r2k_err"> <input id="Hidden1" type="hidden" /> <div class="r2k_iicon"> <asp:Image ID="Image2" runat="server" ImageUrl="~/imgs/icons/dialog-error.png"></asp:Image></div> <div class="r2k_imsg"> Prueba de Validaciones </div> </div> <div class="r2k_warn"> <div class="r2k_iicon"> <asp:Image ID="Image1" runat="server" ImageUrl="~/imgs/icons/dialog-warning.png"> </asp:Image></div> <div class="r2k_imsg"> La pestaña de eventos se mantendra deshabilitada hasta que Ud. agregue cuando menos una solped en el proceso </div> </div> <telerik:RadTabStrip ID="oTabMan" runat="server" MultiPageID="RadMultiPage2" SelectedIndex="0"> <Tabs> <telerik:RadTab runat="server" Text="Solpeds y Posiciones" PageViewID="pagSolPos" Selected="True"> </telerik:RadTab> <telerik:RadTab runat="server" Text="Eventos" PageViewID="pagEventos" Enabled="False"> </telerik:RadTab> </Tabs> </telerik:RadTabStrip> <telerik:RadMultiPage ID="RadMultiPage2" runat="server" BorderColor="Black" BorderStyle="Solid" BorderWidth="1px" SelectedIndex="0"> <telerik:RadPageView ID="pagSolPos" runat="server"> <contenttemplate> <asp:PlaceHolder ID="phGrdSolPos" runat="server"></asp:PlaceHolder> </contenttemplate> </telerik:RadPageView> <telerik:RadPageView ID="pagEventos" runat="server"> <contenttemplate> <asp:PlaceHolder ID="phGrdCal" runat="server"></asp:PlaceHolder> </contenttemplate> </telerik:RadPageView> </telerik:RadMultiPage> </td> </tr> </table> </ContentTemplate> </asp:UpdatePanel> <telerik:RadAjaxPanel ID="panDlgData" runat="server" width="400px"> <telerik:RadDock ID="RadDock1" runat="server" Width="400px" Closed="True" style="z-index:2410;"> <ContentTemplate> <div class="editForm"> <table> <tr> <td> Responsable: </td> <td> <telerik:RadComboBox ID="cmbRespEvento" runat="server" AutoPostBack="True" Width="235px"> </telerik:RadComboBox> </td> </tr> <tr> <td> Tipo Evento: </td> <td> <telerik:RadComboBox ID="cmbSubProceso" runat="server" AutoPostBack="True"> </telerik:RadComboBox> </td> </tr> <tr> <td> Incio: </td> <td> <telerik:RadDateTimePicker ID="dpFecIni" runat="server" Culture="Spanish (Mexico)"> <Calendar UseColumnHeadersAsSelectors="False" UseRowHeadersAsSelectors="False" ViewSelectorText="x"> </Calendar> <TimeView CellSpacing="-1" Culture="Spanish (Mexico)" HeaderText="Seleccione la hora"> </TimeView> <TimePopupButton HoverImageUrl="" ImageUrl="" /> <DatePopupButton HoverImageUrl="" ImageUrl="" /> <DateInput DateFormat="dd/MM/yyyy" DisplayDateFormat="dd/MM/yyyy"> </DateInput> </telerik:RadDateTimePicker> </td> </tr> <tr> <td> Fin: </td> <td> <telerik:RadDateTimePicker ID="dpFecFin" runat="server" Culture="Spanish (Mexico)"> <Calendar UseColumnHeadersAsSelectors="False" UseRowHeadersAsSelectors="False" ViewSelectorText="x"> </Calendar> <TimeView CellSpacing="-1" Culture="Spanish (Mexico)" HeaderText="Seleccione la hora"> </TimeView> <TimePopupButton HoverImageUrl="" ImageUrl="" /> <DatePopupButton HoverImageUrl="" ImageUrl="" /> <DateInput DateFormat="dd/MM/yyyy" DisplayDateFormat="dd/MM/yyyy"> </DateInput> </telerik:RadDateTimePicker> </td> </tr> <tr> <td> Descripcion: </td> <td> <telerik:RadTextBox ID="txtSPDesc" runat="server" Width="300px"> </telerik:RadTextBox> </td> </tr> </table> </div> <div class="footer"> <asp:Button runat="server" ID="cbtnGuardar" Text="Guardar" OnClick="SubmitButton_Click" OnClientClick="return hideForm()" /> <button onclick="javascript:hideForm();" type="button"> Cancelar</button> </div> </ContentTemplate> </telerik:RadDock> </telerik:RadAjaxPanel></asp:Content>a bit complex ;)