or
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
>
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)
{
}
}
<
div
id
=
"blog_header_editor"
>
Header:
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
</
telerik:RadScriptManager
>
<
telerik:RadEditor
ID
=
"HeaderEditor1"
runat
=
"server"
ImageManager-DeletePaths
=
"/UserFiles/Images"
ImageManager-UploadPaths
=
"/UserFiles/Images"
ImageManager-ViewPaths
=
"/UserFiles/Images"
ImageManager-EnableImageEditor
=
"true"
DocumentManager-DeletePaths
=
"/UserFiles/Documents"
DocumentManager-UploadPaths
=
"/UserFiles/Documents"
DocumentManager-ViewPaths
=
"/UserFiles/Documents"
Skin
=
"Windows7"
Width
=
"720"
Height
=
"440"
>
<
Tools
>
<
telerik:EditorToolGroup
Tag
=
"MainToolbar"
>
<
telerik:EditorTool
Name
=
"Print"
ShortCut
=
"CTRL+P"
/>
<
telerik:EditorTool
Name
=
"AjaxSpellCheck"
/>
<
telerik:EditorTool
Name
=
"FindAndReplace"
ShortCut
=
"CTRL+F"
/>
<
telerik:EditorTool
Name
=
"SelectAll"
ShortCut
=
"CTRL+A"
/>
<
telerik:EditorTool
Name
=
"Cut"
/>
<
telerik:EditorTool
Name
=
"Copy"
ShortCut
=
"CTRL+C"
/>
<
telerik:EditorTool
Name
=
"Paste"
ShortCut
=
"CTRL+V"
/>
<
telerik:EditorTool
Name
=
"PasteStrip"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"Undo"
ShortCut
=
"CTRL+Z"
/>
<
telerik:EditorTool
Name
=
"Redo"
ShortCut
=
"CTRL+Y"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
Tag
=
"InsertToolbar"
>
<
telerik:EditorTool
Name
=
"ImageManager"
ShortCut
=
"CTRL+G"
/>
<
telerik:EditorTool
Name
=
"DocumentManager"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"LinkManager"
ShortCut
=
"CTRL+K"
/>
<
telerik:EditorTool
Name
=
"Unlink"
ShortCut
=
"CTRL+SHIFT+K"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"Superscript"
/>
<
telerik:EditorTool
Name
=
"Subscript"
/>
<
telerik:EditorTool
Name
=
"InsertParagraph"
/>
<
telerik:EditorTool
Name
=
"InsertGroupbox"
/>
<
telerik:EditorTool
Name
=
"InsertHorizontalRule"
/>
<
telerik:EditorTool
Name
=
"InsertDate"
/>
<
telerik:EditorTool
Name
=
"InsertTime"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"FormatCodeBlock"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"FormatBlock"
/>
<
telerik:EditorTool
Name
=
"FontName"
ShortCut
=
"CTRL+SHIFT+F"
/>
<
telerik:EditorTool
Name
=
"RealFontSize"
ShortCut
=
"CTRL+SHIFT+P"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"AbsolutePosition"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"Bold"
ShortCut
=
"CTRL+B"
/>
<
telerik:EditorTool
Name
=
"Italic"
ShortCut
=
"CTRL+I"
/>
<
telerik:EditorTool
Name
=
"Underline"
ShortCut
=
"CTRL+U"
/>
<
telerik:EditorTool
Name
=
"StrikeThrough"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"JustifyLeft"
/>
<
telerik:EditorTool
Name
=
"JustifyCenter"
/>
<
telerik:EditorTool
Name
=
"JustifyRight"
/>
<
telerik:EditorTool
Name
=
"JustifyFull"
/>
<
telerik:EditorTool
Name
=
"JustifyNone"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"Indent"
/>
<
telerik:EditorTool
Name
=
"Outdent"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"InsertOrderedList"
/>
<
telerik:EditorTool
Name
=
"InsertUnorderedList"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"ToggleTableBorder"
/>
<
telerik:EditorTool
Name
=
"XhtmlValidator"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
>
<
telerik:EditorTool
Name
=
"ForeColor"
/>
<
telerik:EditorTool
Name
=
"BackColor"
/>
<
telerik:EditorTool
Name
=
"ApplyClass"
/>
<
telerik:EditorTool
Name
=
"FormatStripper"
/>
</
telerik:EditorToolGroup
>
<
telerik:EditorToolGroup
Tag
=
"DropdownToolbar"
>
<
telerik:EditorTool
Name
=
"InsertSymbol"
/>
<
telerik:EditorTool
Name
=
"InsertTable"
/>
<
telerik:EditorTool
Name
=
"InsertSnippet"
/>
<
telerik:EditorTool
Name
=
"ImageMapDialog"
/>
<
telerik:EditorTool
Name
=
"InsertCustomLink"
ShortCut
=
"CTRL+ALT+K"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"ConvertToLower"
/>
<
telerik:EditorTool
Name
=
"ConvertToUpper"
/>
<
telerik:EditorSeparator
/>
<
telerik:EditorTool
Name
=
"Zoom"
/>
<
telerik:EditorTool
Name
=
"ModuleManager"
/>
<
telerik:EditorTool
Name
=
"ToggleScreenMode"
ShortCut
=
"F11"
/>
<
telerik:EditorTool
Name
=
"AboutDialog"
/>
</
telerik:EditorToolGroup
>
</
Tools
>
<
Content
>
</
Content
>
<
ImageManager
ViewPaths
=
"/UserFiles/Images"
UploadPaths
=
"/UserFiles/Images"
DeletePaths
=
"/UserFiles/Images"
MaxUploadFileSize
=
"2048000"
></
ImageManager
>
<
DocumentManager
ViewPaths
=
"/UserFiles/Documents"
UploadPaths
=
"/UserFiles/Documents"
DeletePaths
=
"/UserFiles/Documents"
MaxUploadFileSize
=
"2048000"
></
DocumentManager
>
</
telerik:RadEditor
>
</
div
>
<
div
class
=
"clear"
></
div
>
<
div
id
=
"buttons"
>
<
div
id
=
"cmdSave"
class
=
"page_property_button"
>
<
asp:ImageButton
runat
=
"server"
ID
=
"ibtnSave"
OnClick
=
"cmdSave_Click"
src
=
"/LookAndFeel/Images/icon_save.png"
class
=
"page_property_icon"
/>
<
div
class
=
"page_property_text"
>
Save<
br
/>
This Blog
</
div
>
<
div
class
=
"clear"
></
div
>
</
div
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
AllowPaging
=
"True"
OnItemDataBound
=
"RadGrid1_ItemDataBound"
OnPreRender
=
"RadGrid1_PreRender"
PageSize
=
"5"
onneeddatasource
=
"RadGrid1_NeedDataSource"
>
<
MasterTableView
DataKeyNames
=
"doc_id"
>
</
MasterTableView
>
<
PagerStyle
EnableSEOPaging
=
"true"
SEOPagingQueryStringKey
=
"page"
/>
</
telerik:RadGrid
>
public
partial
class
_Default : System.Web.UI.Page
{
public
class
TestData
{
public
int
doc_id{
get
;
set
;}
public
string
Title{
get
;
set
;}
}
private
List<TestData> GetData()
{
var data =
new
List<TestData>();
for
(
int
i = 1; i < 30; i++) {data.Add(
new
TestData(){doc_id = i,Title =
"Title for "
+ i});}
return
data;
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
Debug.WriteLine(
"Pageload"
);
}
protected
void
RadGrid1_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
Debug.WriteLine(
"ItemDataBound: "
+ (e.Item
as
GridDataItem).GetDataKeyValue(
"doc_id"
));
}
}
protected
void
RadGrid1_PreRender(
object
sender, EventArgs e)
{
Debug.WriteLine(
"PreRender"
);
}
protected
void
RadGrid1_NeedDataSource(
object
sender, GridNeedDataSourceEventArgs e)
{
Debug.WriteLine(
"NeedDataSource"
);
RadGrid1.DataSource = GetData();
}
}