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)
{
}
}