or
<select id="SelColumnA" runat="server" onchange="jf_st_read_sel();" style="width:125px"> <option title="VALUE01">TEXT1</option> <option title="VALUE02">TEXT2</option> <option title="VALUE02">TEXT2</option></select><telerik:RadGrid ID="RadGrid1" OnNeedDataSource="RadGrid1_DataSource" AllowSorting="false" AllowAutomaticUpdates="true" Skin="Office2010Silver" OnBatchEditCommand="RadGrid1_BatchEditCommand" OnItemDataBound="RadGrid1_ItemDataBound" AutoGenerateColumns="false" runat="server"> <ClientSettings Scrolling-AllowScroll="False" EnableRowHoverStyle="True"> <Selecting AllowRowSelect="True" /> <Resizing AllowColumnResize="true" /> <Scrolling AllowScroll="true" UseStaticHeaders="True" ScrollHeight=""/> </ClientSettings> <MasterTableView DataKeyNames="MENUID" EditMode="Batch" CommandItemDisplay="Top" AutoGenerateColumns="False" BatchEditingSettings-OpenEditingEvent="Click" CssClass="mst_table"> <Columns> <telerik:GridTemplateColumn ItemStyle-HorizontalAlign="Center" FilterControlAltText="Filter MENUID column" HeaderText="MENUID" ="MENUID" UniqueName="MENUID" DataField="MENUID"> <ItemTemplate> <asp:Label ID="lb_MENUID" runat="server" Text='<%# Eval("MENUID")%>'></asp:Label> </ItemTemplate> <HeaderStyle Width="40px" /> <ItemStyle HorizontalAlign="Center" /> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="COLUMN_A" HeaderStyle-Width="100px" FilterControlAltText="Filter COLUMN_A column" UniqueName="COLUMN_A" DataField="COLUMN_A" > <ItemTemplate> <asp:Label ID="lb_COLUMN_A_NAME" runat="server" Text='<%# Eval("COLUMN_A_NAME")%>'></asp:Label> </ItemTemplate> <EditItemTemplate> <telerik:RadComboBox ID="COLUMN_A_CodeComboBox" runat="server" OnPreRender="COLUMN_A_CodeComboBox_OnPreRender" Width="100px" > </telerik:RadComboBox> </EditItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> </telerik:RadGrid>protected void SelectBoxValueChanged(object sender, EventArgs e) { for (int i = 0; i < this.RadGrid1.Items.Count; i++) { (this.RadGrid1.Items[i].FindControl("lb_COLUMN_NAME") as Label).Text = this.SelColumnA.Items[SelColumnA
.SelectedIndex].Text; } } }<telerik:radgrid id="grdData" height="400px" width="100%" runat="server" pagesize="50" showstatusbar="True" allowmultirowselection="False" allowpaging="True" autogeneratecolumns="False" allowsorting="true" gridlines="None" cssclass="gridControl" onneeddatasource="OnNeedDataSource" ondetailtabledatabind="RadGrid1_grdData" onprerender="grdStudentsData_PreRender"> <pagerstyle mode="NumericPages"></pagerstyle> <clientsettings allowcolumnsreorder="False" reordercolumnsonclient="False"> <Scrolling AllowScroll="True" UseStaticHeaders="True" /> </clientsettings> <mastertableview width="98%" summary="Data" clientdatakeynames="PropertyA, PropertyB, PropertyC, PropertyD, PropertyE"> <DetailTables> <telerik:GridTableView AutoGenerateColumns="false" DataKeyNames="Code,DisplayValue" Width="100%"> <Columns> <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False" DataField="DisplayValue" Display="True" HeaderText="Display Value" ReadOnly="True" Reorderable="True" Resizable="True" ShowSortIcon="False" UniqueName="DisplayValue" Visible="True"> </telerik:GridBoundColumn> <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False" DataField="Code" Display="True" HeaderText="Code" ReadOnly="True" Reorderable="False" Resizable="True" ShowSortIcon="False" UniqueName="Code" Visible="True"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False" DataField="PropertyA" Display="True" HeaderText="PropertyA" ReadOnly="True" Reorderable="True" Resizable="True" ShowSortIcon="False" UniqueName="Entity" Visible="True"> </telerik:GridBoundColumn> <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False" DataField="PropertyB" Display="True" HeaderText="PropertyB" ReadOnly="True" Reorderable="False" Resizable="True" ShowSortIcon="False" UniqueName="CodeAttribute" Visible="True"> </telerik:GridBoundColumn> <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False" DataField="PropertyC" Display="True" HeaderText="PropertyC" ReadOnly="True" Reorderable="True" Resizable="True" ShowSortIcon="False" UniqueName="DescriptionAttribute" Visible="true"> </telerik:GridBoundColumn> <telerik:GridBoundColumn AllowFiltering="False" AllowSorting="False" DataField="PropertyD" Display="True" HeaderText="PropertyD" ReadOnly="True" Reorderable="True" Resizable="True" ShowSortIcon="False" UniqueName="OptionAttribute" Visible="true"> </telerik:GridBoundColumn> </Columns> </mastertableview> </telerik:radgrid>Stack Trace:
[HttpException (0x80004005): DataBinding: 'Object' does not contain a property with the name 'Code'.] System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) +11394950 Telerik.Web.UI.GridTableView.PopulateDataKeys(Object dataItem) +409 [GridException: There was a problem extracting DataKeyValues from the DataSource. Please ensure that DataKeyNames are specified correctly and all fields specified exist in the DataSource.] Telerik.Web.UI.GridTableView.PopulateDataKeys(Object dataItem) +1060 Telerik.Web.UI.GridItemBuilder.CreateItems(GridGroupingContext group) +411 Telerik.Web.UI.GridTableView.CreateControlHierarchy(Boolean useDataSource) +1169 Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +873 System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +94 System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +182 System.Web.UI.WebControls.DataBoundControl.PerformSelect() +274 Telerik.Web.UI.GridTableView.DataBind() +432 Telerik.Web.UI.GridDataItem.OnExpand() +461 Telerik.Web.UI.GridItem.set_Expanded(Boolean value) +295 Telerik.Web.UI.RadCompositeDataBoundControl.OnPreRender(EventArgs e) +46 System.Web.UI.Control.PreRenderRecursiveInternal() +113 System.Web.UI.Control.PreRenderRecursiveInternal() +222 System.Web.UI.Control.PreRenderRecursiveInternal() +222 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4201 |

<telerik:RadListView ID="lvWorkGroups" runat="server" DataKeyNames="ID, Name" OnItemDataBound="lvWorkGroups_ItemDataBound" onneeddatasource="lvWorkGroups_NeedDataSource" AllowPaging="True" PageSize="1" ItemPlaceholderID="PlaceHolder1" onpageindexchanged="lvWorkGroups_PageIndexChanged" onpagesizechanged="lvWorkGroups_PageSizeChanged" ondatabound="lvWorkGroups_DataBound" onitemcommand="lvWorkGroups_ItemCommand"> <LayoutTemplate> <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder> <div class="workGroup2" style="text-align:center"> <div style="margin:auto;"> <asp:Button runat="server" ID="btnFirst" CommandName="Page" CommandArgument="First" Text="First" Enabled="<%#Container.CurrentPageIndex > 0 %>" CausesValidation="false"></asp:Button> <asp:Button runat="server" ID="btnPrev" CommandName="Page" CommandArgument="Prev" Text="Prev" Enabled="<%#Container.CurrentPageIndex > 0 %>" CausesValidation="false"></asp:Button> <span style="vertical-align: middle; line-height:22px; display:inline-block;">Page <%#Container.CurrentPageIndex + 1 %> of <%#Container.PageCount %></span> <asp:Button runat="server" ID="btnNext" CommandName="Page" CommandArgument="Next" Text="Next" Enabled="<%#Container.CurrentPageIndex + 1 < Container.PageCount %>" CausesValidation="false"> </asp:Button> <asp:Button runat="server" ID="btnLast" CommandName="Page" CommandArgument="Last" Text="Last" Enabled="<%#Container.CurrentPageIndex + 1 < Container.PageCount %>" CausesValidation="false"> </asp:Button> </div> </div> </LayoutTemplate> <ItemTemplate> <uc1:InspectionWorkGroup ID="InspectionWorkGroup1" runat="server" OnworkGroupSaved="wg_workGroupSaved"/> </ItemTemplate> </telerik:RadListView>
public class invoicer{ public class MyTemplate : ITemplate { private string colname; protected Label lControl; public MyTemplate(string cName) { colname = cName; } public void InstantiateIn(System.Web.UI.Control container) { lControl = new Label(); lControl.ID = "Label-DurationType"; lControl.DataBinding += new EventHandler(lControl_DataBinding); container.Controls.Add(lControl); } public void lControl_DataBinding(object sender, EventArgs e) { Label l = (Label)sender; GridDataItem container = (GridDataItem)l.NamingContainer; l.Text = ((DataRowView)container.DataItem)[colname].ToString() + "<br />"; } } public class MyEditTemplate : IBindableTemplate { public void InstantiateIn(Control container) { GridEditableItem item = ((GridEditableItem)(container.NamingContainer)); DropDownList drop = new DropDownList(); drop.ID = "DurationType-DDL"; drop.DataSource = (DataTable)GetTableForDropDown(); drop.DataTextField = "DurationType"; drop.DataValueField = "DurationType"; container.Controls.Add(drop); } public System.Collections.Specialized.IOrderedDictionary ExtractValues(System.Web.UI.Control container) { OrderedDictionary od = new OrderedDictionary(); od.Add("DurationType", ((DropDownList)(((GridDataItem)(container)).FindControl("DurationType-DDL"))).DataValueField); return od; } } void grid_NeedDataSource(object sender, GridNeedDataSourceEventArgs e) { RadGrid grid = (RadGrid)sender; string id = grid.ID; DataTable current = (DataTable)HttpContext.Current.Session[int.Parse(id.Split(new string[] {"RadGrid"},StringSplitOptions.RemoveEmptyEntries)[0])]; grid.DataSource = current; } protected void grid_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e) { if (e.Item is GridEditableItem && e.Item.IsInEditMode) { GridEditableItem editItem = (GridEditableItem)e.Item; DropDownList ddl = (DropDownList)editItem.FindControl("DurationType-DDL"); ddl.DataSource = (DataTable)GetTableForDropDown(); ddl.DataTextField = "DurationType"; ddl.DataValueField = "DurationType"; ddl.SelectedIndex = editItem.ItemIndex; ddl.SelectedValue = DataBinder.Eval(editItem.DataItem, "DurationType").ToString(); // To get the selected value } } public void DefineGridStructure(int i, PlaceHolder ph,Boolean bl) { RadGrid grid = new RadGrid(); grid.ID = "RadGrid" + i.ToString(); grid.Visible = bl; grid.NeedDataSource += new GridNeedDataSourceEventHandler(grid_NeedDataSource); grid.AutoGenerateEditColumn = true; grid.AutoGenerateDeleteColumn = true; grid.AllowAutomaticInserts = false; grid.Width = Unit.Percentage(100); grid.PageSize = 15; grid.AllowPaging = true; grid.AllowFilteringByColumn = false; grid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric; grid.AutoGenerateColumns = false; grid.MasterTableView.Width = Unit.Percentage(100); grid.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.TopAndBottom; grid.AllowAutomaticDeletes = false; grid.AllowAutomaticUpdates = false; grid.ItemDataBound += new GridItemEventHandler(grid_ItemDataBound); grid.InsertCommand += grid_InsertCommand; grid.DeleteCommand += grid_DeleteCommand; grid.UpdateCommand += grid_UpdateCommand; grid.MasterTableView.DataKeyNames = new string[] { "RowNumber" }; GridBoundColumn boundColumn = new GridBoundColumn(); boundColumn.DataField = "RowNumber"; boundColumn.HeaderText = "RowNumber"; boundColumn.ReadOnly = true; grid.MasterTableView.Columns.Add(boundColumn); boundColumn = new GridBoundColumn(); boundColumn.DataField = "Size"; boundColumn.HeaderText = "Size"; grid.MasterTableView.Columns.Add(boundColumn); boundColumn = new GridBoundColumn(); boundColumn.DataField = "Description"; boundColumn.HeaderText = "Description"; grid.MasterTableView.Columns.Add(boundColumn); boundColumn = new GridBoundColumn(); boundColumn.DataField = "Quantity"; boundColumn.HeaderText = "Quantity"; grid.MasterTableView.Columns.Add(boundColumn); boundColumn = new GridBoundColumn(); boundColumn.DataField = "Unit"; boundColumn.HeaderText = "Unit"; grid.MasterTableView.Columns.Add(boundColumn); boundColumn = new GridBoundColumn(); boundColumn.DataField = "Duration"; boundColumn.HeaderText = "Duration"; grid.MasterTableView.Columns.Add(boundColumn); GridTemplateColumn objGridTemplateColumn = new GridTemplateColumn(); objGridTemplateColumn.HeaderText = "DurationType"; objGridTemplateColumn.DataField = "DurationType"; objGridTemplateColumn.ItemTemplate = new MyTemplate("DurationType"); objGridTemplateColumn.EditItemTemplate = new MyEditTemplate(); grid.MasterTableView.Columns.Add(objGridTemplateColumn); boundColumn = new GridBoundColumn(); boundColumn.DataField = "Amount"; boundColumn.HeaderText = "Amount"; grid.MasterTableView.Columns.Add(boundColumn); grid.MasterTableView.EditMode = GridEditMode.InPlace; LinkButton lb = new LinkButton(); lb.ID = "Show-Grid-" + i.ToString(); lb.Text = "Show Grid " + i.ToString(); lb.Click += new EventHandler(ShowGrid); LinkButton lbd = new LinkButton(); lbd.ID = "Delete-Grid-" + i.ToString(); lbd.Text = "Delete Grid " + i.ToString(); lbd.Click += (sender, e) => DeleteGrid(sender, e, ph); Label lbl = new Label(); lbl.ID = "Break-" + i.ToString(); lbl.Text = "<br>"; ph.Controls.Add(lb); ph.Controls.Add(lbd); ph.Controls.Add(grid); ph.Controls.Add(lbl); } public void DeleteGrid(object sender, EventArgs e, PlaceHolder ph) { LinkButton gridLink = (LinkButton)sender; String gridNum = gridLink.ID.ToString().Split('-').Last(); System.Web.UI.Page currentPage; currentPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; RadGrid grid = (RadGrid)currentPage.FindControl("RadGrid" + gridNum); Label lbl = (Label)currentPage.FindControl("Break-" + gridNum); LinkButton lbd = (LinkButton)currentPage.FindControl("Delete-Grid-" + gridNum); LinkButton lb = (LinkButton)currentPage.FindControl("Show-Grid-" + gridNum); ph.Controls.Remove(grid); ph.Controls.Remove(lbl); ph.Controls.Remove(lb); ph.Controls.Remove(lbd); int next = Convert.ToInt32(GetSession()); next = next - 1; HttpContext.Current.Session.Add("Tables", next); HttpContext.Current.Session.Remove(gridNum); ph.Controls.Clear(); loopGrids(ph); } public void loopGrids(PlaceHolder ph) { System.Web.UI.Page currentPage; currentPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; string ctrlname = currentPage.Request.Params.Get("__EVENTTARGET"); for (int i = 1; i <= (int)HttpContext.Current.Session["Tables"]; i++) { if (i == (int)HttpContext.Current.Session["Tables"]) { if (ctrlname == "Button1") { DefineGridStructure(i, ph, false); } else { DefineGridStructure(i, ph, true); } } else { DefineGridStructure(i, ph, false); } } } public void ShowGrid(object sender, EventArgs e) { LinkButton gridLink = (LinkButton)sender; String gridNum = gridLink.ID.ToString().Split('-').Last(); System.Web.UI.Page currentPage; currentPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler; HttpContext.Current.Response.Write("Current gridnum: " + gridNum); RadGrid grid = (RadGrid)currentPage.FindControl("RadGrid" + gridNum); if (grid.Visible) { grid.Visible = false; } else { grid.Visible = true; } } public void grid_UpdateCommand(object sender, GridCommandEventArgs e) { GridEditableItem editItem = e.Item as GridEditableItem; Hashtable newValues = new Hashtable(); newValues["RowNumber"] = (editItem["RowNumber"].Controls[0] as TextBox).Text; newValues["Size"] = (editItem["Size"].Controls[0] as TextBox).Text; newValues["Description"] = (editItem["Description"].Controls[0] as TextBox).Text; newValues["Quantity"] = (editItem["Quantity"].Controls[0] as TextBox).Text; newValues["Unit"] = (editItem["Unit"].Controls[0] as TextBox).Text; newValues["Duration"] = (editItem["Duration"].Controls[0] as TextBox).Text; newValues["DurationType"] = (editItem.FindControl("DurationType-DDL") as DropDownList).SelectedValue; newValues["Amount"] = (editItem["Amount"].Controls[0] as TextBox).Text; DataTable dtCurrentTable = (DataTable)HttpContext.Current.Session[int.Parse(editItem.OwnerGridID.Split(new string[] { "RadGrid" }, StringSplitOptions.RemoveEmptyEntries)[0])]; foreach (DictionaryEntry entry in newValues) { dtCurrentTable.Rows[e.Item.ItemIndex][entry.Key.ToString()] = entry.Value; } SaveTable(editItem.OwnerGridID); } public void grid_DeleteCommand(object sender, GridCommandEventArgs e) { GridDataItem item = e.Item as GridDataItem; DataTable dt = (DataTable)HttpContext.Current.Session[int.Parse(item.OwnerGridID.Split(new string[] { "RadGrid" }, StringSplitOptions.RemoveEmptyEntries)[0])]; dt.Rows.Remove(dt.Rows[item.ItemIndex]); ResetRowID(dt); SaveTable(item.OwnerGridID); } public void grid_InsertCommand(object sender, GridCommandEventArgs e) { GridEditableItem editedItem = e.Item as GridEditableItem; GridEditManager editMan = editedItem.EditManager; //Set new values Hashtable newValues = new Hashtable(); //The GridTableView will fill the values from all editable columns in the hash DataTable dtCurrentTable = (DataTable)HttpContext.Current.Session[int.Parse(editedItem.OwnerGridID.Split(new string[] { "RadGrid" }, StringSplitOptions.RemoveEmptyEntries)[0])]; DataRow dr = null; int count = dtCurrentTable.Rows.Count; count++; dr = dtCurrentTable.NewRow(); dr["RowNumber"] = count; newValues["RowNumber"] = count; newValues["Size"] = (editedItem["Size"].Controls[0] as TextBox).Text; newValues["Description"] = (editedItem["Description"].Controls[0] as TextBox).Text; newValues["Quantity"] = (editedItem["Quantity"].Controls[0] as TextBox).Text; newValues["Unit"] = (editedItem["Unit"].Controls[0] as TextBox).Text; newValues["Duration"] = (editedItem["Duration"].Controls[0] as TextBox).Text; newValues["DurationType"] = (editedItem.FindControl("DurationType-DDL") as DropDownList).SelectedValue; newValues["Amount"] = (editedItem["Amount"].Controls[0] as TextBox).Text; foreach (DictionaryEntry entry in newValues) { dr[entry.Key.ToString()] = entry.Value; } dtCurrentTable.Rows.Add(dr); SaveTable(editedItem.OwnerGridID); } public string GetSession() { string SID = HttpContext.Current.Session["Tables"].ToString(); return SID; } public void SaveTable(string id) { DataTable dtCurrentTable = (DataTable)HttpContext.Current.Session[int.Parse(id.Split(new string[] { "RadGrid" }, StringSplitOptions.RemoveEmptyEntries)[0])]; HttpContext.Current.Session.Add(id.Split(new string[] { "RadGrid" }, StringSplitOptions.RemoveEmptyEntries)[0], dtCurrentTable); } public DataTable GetTable() { // // Here we create a DataTable with a few columns. // // Create Datatable to store all colums DataTable dt = new DataTable(); DataRow dr = null; dt.Columns.Add(new DataColumn("RowNumber", typeof(string))); dt.Columns.Add(new DataColumn("Size", typeof(string))); dt.Columns.Add(new DataColumn("Description", typeof(string))); dt.Columns.Add(new DataColumn("Quantity", typeof(string))); dt.Columns.Add(new DataColumn("Unit", typeof(string))); dt.Columns.Add(new DataColumn("Duration", typeof(string))); dt.Columns.Add(new DataColumn("DurationType", typeof(string))); dt.Columns.Add(new DataColumn("Amount", typeof(string))); dr = dt.NewRow(); dr["RowNumber"] = 1; dr["Size"] = string.Empty; dr["Description"] = string.Empty; dr["Quantity"] = string.Empty; dr["Unit"] = string.Empty; dr["Duration"] = string.Empty; dr["DurationType"] = string.Empty; dr["Amount"] = string.Empty; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RowNumber"] = 2; dr["Size"] = string.Empty; dr["Description"] = string.Empty; dr["Quantity"] = string.Empty; dr["Unit"] = string.Empty; dr["Duration"] = string.Empty; dr["DurationType"] = string.Empty; dr["Amount"] = string.Empty; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RowNumber"] = 3; dr["Size"] = string.Empty; dr["Description"] = string.Empty; dr["Quantity"] = string.Empty; dr["Unit"] = string.Empty; dr["Duration"] = string.Empty; dr["DurationType"] = string.Empty; dr["Amount"] = string.Empty; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RowNumber"] = 4; dr["Size"] = string.Empty; dr["Description"] = string.Empty; dr["Quantity"] = string.Empty; dr["Unit"] = string.Empty; dr["Duration"] = string.Empty; dr["DurationType"] = string.Empty; dr["Amount"] = string.Empty; dt.Rows.Add(dr); dr = dt.NewRow(); dr["RowNumber"] = 5; dr["Size"] = string.Empty; dr["Description"] = string.Empty; dr["Quantity"] = string.Empty; dr["Unit"] = string.Empty; dr["Duration"] = string.Empty; dr["DurationType"] = string.Empty; dr["Amount"] = string.Empty; dt.Rows.Add(dr); return dt; } static DataTable GetTableForDropDown() { // // Here we create a DataTable with a few columns. // // Create Datatable to store all colums DataTable dt = new DataTable(); DataRow dr = null; dt.Columns.Add(new DataColumn("DurationType", typeof(string))); dr = dt.NewRow(); dr["DurationType"] = "Hours"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["DurationType"] = "Days"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["DurationType"] = "Weeks"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["DurationType"] = "Months"; dt.Rows.Add(dr); return dt; } private void ResetRowID(DataTable dt) { int rowNumber = 1; if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { row[0] = rowNumber; rowNumber++; } } }}public partial class _Default : System.Web.UI.Page{ invoicer inv = new invoicer(); protected void Page_Load(object sender, EventArgs e) { } protected void Page_Init(object sender, EventArgs e) { string ctrlname = this.Page.Request.Params.Get("__EVENTTARGET"); if (Session["Tables"] == null) { Session.Add("Tables", 1); DataTable dt = inv.GetTable(); Session.Add(Session["Tables"].ToString(), dt); inv.DefineGridStructure(1, PlaceHolder2, true); } if (IsPostBack) { int next = Convert.ToInt32(inv.GetSession()); PlaceHolder2.Controls.Clear(); inv.loopGrids(PlaceHolder2); if (ctrlname == "Button1") { next = next + 1; Session.Add("Tables",next); Response.Write("Button getSession: " + inv.GetSession()); DataTable dt = inv.GetTable(); Session.Add(Session["Tables"].ToString(), dt); inv.DefineGridStructure(next, PlaceHolder2,true); } } } protected void Button1_Click(object sender, EventArgs e) { } }