Hello programmers, i hope now you can help me.
I have a grid that each item has its table of detail, yet each detail table is different, because they may have a different number of columns.
I modify the structure from the code, however, when I expand the detail table shows the previous structure and expand a second time, shows the correct structure.
Is there any way to display the existing economic structure right the first time?
Annex code and images.
-- ASPX ========================================================================
<
Telerik:RadGrid
ID
=
"radGriOrdComDetalles"
runat
=
"server"
Width
=
"980"
AutoGenerateColumns
=
"false"
AllowAutomaticDeletes
=
"false"
AllowAutomaticInserts
=
"false"
AllowAutomaticUpdates
=
"false"
>
<
MasterTableView
DataKeyNames
=
"Id, prodSkucode"
CommandItemDisplay
=
"None"
EditMode
=
"InPlace"
NoDetailRecordsText
=
" "
NoMasterRecordsText
=
""
>
<
Columns
>
<
Telerik:GridBoundColumn
UniqueName
=
"colIdOrdCompra"
HeaderText
=
"Id orden de compra"
DataField
=
"Id"
HeaderStyle-Width
=
"130px"
/>
<
Telerik:GridBoundColumn
UniqueName
=
"colSku"
HeaderText
=
"SKU"
DataField
=
"prodSkucode"
HeaderStyle-Width
=
"160px"
/>
<
Telerik:GridBoundColumn
UniqueName
=
"colDescripcion"
HeaderText
=
"Descripcion"
DataField
=
"prodDescripcion"
HeaderStyle-Width
=
"300px"
/>
<
Telerik:GridBoundColumn
UniqueName
=
"colDepartamento"
HeaderText
=
"Departamento"
DataField
=
"depaDescripcion"
HeaderStyle-Width
=
"180px"
/>
</
Columns
>
<
DetailTables
>
<
Telerik:GridTableView
Name
=
"gridProductoDetalles"
DataKeyNames
=
"Id, prodSkucode"
EditMode
=
"InPlace"
NoDetailRecordsText
=
""
NoMasterRecordsText
=
""
GridLines
=
"Vertical"
>
</
Telerik:GridTableView
>
</
DetailTables
>
</
MasterTableView
>
</
Telerik:RadGrid
>
-- CODE BEHIND =======================================================================
void
radGriOrdComDetalles_DetailTableDataBind(
object
sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
{
try
{
if
(e.DetailTableView.Name ==
"gridProductoDetalles"
)
{
Telerik.Web.UI.GridDataItem parentItem = e.DetailTableView.ParentItem;
strSkucode = parentItem.Cells[3].Text;
strIdOrdCompra = parentItem.Cells[2].Text;
DataTable datTabDatosDetalle =
new
DataTable();
if
(ViewState[
"OrdCompraProdDetallesSub"
+ strIdOrdCompra + strSkucode] ==
null
)
datTabDatosDetalle = CCSMovimientoProductos.BuscarProdDetOrdenCompra_CEDIS(strIdOrdCompra, strSkucode).Tables[0];
else
datTabDatosDetalle = (DataTable)ViewState[
"OrdCompraProdDetallesSub"
+ strIdOrdCompra + strSkucode];
//e.DetailTableView.DataSource = datTabDatosDetalle;
// SE AGREGAN LAS COLUMNAS CORRESPONDIENTES.
radGriOrdComDetalles.MasterTableView.DetailTables[0].Columns.Clear();
radGriOrdComDetalles.MasterTableView.DetailTables[0].Rebind();
Telerik.Web.UI.GridBoundColumn campo;
foreach
(DataColumn dc
in
datTabDatosDetalle.Columns)
{
campo =
new
Telerik.Web.UI.GridBoundColumn();
radGriOrdComDetalles.MasterTableView.DetailTables[0].Columns.Add(campo);
campo.UniqueName =
"col"
+ dc.ColumnName;
campo.HeaderText =
"[ "
+ dc.ColumnName +
" ]"
;
campo.HeaderStyle.Font.Bold =
true
;
campo.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
campo.DataField = dc.ColumnName;
if
(dc.ColumnName ==
"Talla"
)
campo.ReadOnly =
true
;
}
Telerik.Web.UI.GridEditCommandColumn campoEdit =
new
Telerik.Web.UI.GridEditCommandColumn();
campoEdit.UniqueName =
"colEdit"
;
radGriOrdComDetalles.MasterTableView.DetailTables[0].Columns.Add(campoEdit);
campoEdit.UniqueName =
"colEdit"
;
campoEdit.ButtonType = Telerik.Web.UI.GridButtonColumnType.LinkButton;
campoEdit.EditText =
"Editar"
;
campoEdit.UpdateText =
"Actualizar"
;
campoEdit.CancelText =
"Cancelar"
;
// SE AGREGA EN EL VIEWSTATE LA REGLETA CORRESPONDIENTE AL PRODUCTO
if
(ViewState[
"OrdCompraProdDetallesSub"
+ strIdOrdCompra + strSkucode] ==
null
)
ViewState.Add(
"OrdCompraProdDetallesSub"
+ strIdOrdCompra + strSkucode, datTabDatosDetalle);
else
ViewState[
"OrdCompraProdDetallesSub"
+ strIdOrdCompra + strSkucode] = datTabDatosDetalle;
// SE AGREGAN LOS DATOS FINALES AL SOURCE DEL GRID.
radGriOrdComDetalles.MasterTableView.DetailTables[0].DataSource = datTabDatosDetalle;
radGriOrdComDetalles.MasterTableView.DetailTables[0].Columns[0].Visible =
false
;
radGriOrdComDetalles.MasterTableView.DetailTables[0].Columns[1].Visible =
false
;
radGriOrdComDetalles.MasterTableView.DetailTables[0].CommandItemDisplay = Telerik.Web.UI.GridCommandItemDisplay.Top;
radGriOrdComDetalles.MasterTableView.DetailTables[0].EditMode = Telerik.Web.UI.GridEditMode.InPlace;
radGriOrdComDetalles.Rebind();
}
}
catch
(Exception ex)
{
}
}