M
Mark Miller
I have created a number of RadioButton controls during the OnItemDataBound
event of a datagrid control.
..aspx file:
<asp:datagrid id="dgProductOptions" runat="server"
AutoGenerateColumns="False" OnItemDataBound="LoadChildRecords" Width="100%">
codebehind:
public void LoadChildRecords(object Sender, DataGridItemEventArgs e){
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType ==
ListItemType.Item){
DataList dlPrintFinish = (DataList)e.Item.FindControl("dlPrintFinish");
DataView dvOptions =
((DataRowView)e.Item.DataItem).CreateChildView("ProductOptions");
System.Web.UI.HtmlControls.HtmlTable tbl = new HtmlTable();
tbl.Border = 0;
tbl.CellPadding = 0;
tbl.CellSpacing = 0;
tbl.Width = "100%";
for(int i=0; i<dvOptions.Count; i++){
HtmlTableRow tr = new HtmlTableRow();
HtmlTableCell td = new HtmlTableCell();
HtmlInputRadioButton rad = new HtmlInputRadioButton();
rad.ID = "radFinish";
rad.Name = "radFinish";
rad.Value = dvOptions["ProductSKU"].ToString();
rad.EnableViewState = true;
Label lblFinish = new Label();
lblFinish.Text = dvOptions["FinishDescription"].ToString();
if(i==0){
rad.Checked = true;
}
td.Controls.Add(rad);
td.Controls.Add(lblFinish);
tr.Cells.Add(td);
HtmlTableCell td2 = new HtmlTableCell();
Label lbl = new Label();
lbl.Text = Double.Parse(dvOptions["MSRP"].ToString()).ToString("C");
td2.Controls.Add(lbl);
tr.Cells.Add(td2);
tbl.Rows.Add(tr);
}
phdPrintFinish = (PlaceHolder)e.Item.FindControl("phdPrintFinish");
phdPrintFinish.Controls.Add(tbl);
}
}
I realize that I need to recreate these controls during the OnLoad event,
but I'm not clear how to do this. The number of rows and the number of
RadioButton controls per row are both unknown until I have the data. How can
I recreate these controls on postback in order to read their values?
event of a datagrid control.
..aspx file:
<asp:datagrid id="dgProductOptions" runat="server"
AutoGenerateColumns="False" OnItemDataBound="LoadChildRecords" Width="100%">
codebehind:
public void LoadChildRecords(object Sender, DataGridItemEventArgs e){
if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType ==
ListItemType.Item){
DataList dlPrintFinish = (DataList)e.Item.FindControl("dlPrintFinish");
DataView dvOptions =
((DataRowView)e.Item.DataItem).CreateChildView("ProductOptions");
System.Web.UI.HtmlControls.HtmlTable tbl = new HtmlTable();
tbl.Border = 0;
tbl.CellPadding = 0;
tbl.CellSpacing = 0;
tbl.Width = "100%";
for(int i=0; i<dvOptions.Count; i++){
HtmlTableRow tr = new HtmlTableRow();
HtmlTableCell td = new HtmlTableCell();
HtmlInputRadioButton rad = new HtmlInputRadioButton();
rad.ID = "radFinish";
rad.Name = "radFinish";
rad.Value = dvOptions["ProductSKU"].ToString();
rad.EnableViewState = true;
Label lblFinish = new Label();
lblFinish.Text = dvOptions["FinishDescription"].ToString();
if(i==0){
rad.Checked = true;
}
td.Controls.Add(rad);
td.Controls.Add(lblFinish);
tr.Cells.Add(td);
HtmlTableCell td2 = new HtmlTableCell();
Label lbl = new Label();
lbl.Text = Double.Parse(dvOptions["MSRP"].ToString()).ToString("C");
td2.Controls.Add(lbl);
tr.Cells.Add(td2);
tbl.Rows.Add(tr);
}
phdPrintFinish = (PlaceHolder)e.Item.FindControl("phdPrintFinish");
phdPrintFinish.Controls.Add(tbl);
}
}
I realize that I need to recreate these controls during the OnLoad event,
but I'm not clear how to do this. The number of rows and the number of
RadioButton controls per row are both unknown until I have the data. How can
I recreate these controls on postback in order to read their values?