| | |
Dynamic rows & controls in a table - problem
Please support our ASP advertiser: PostgreSQL or MySQL? Compare and contrast the two most popular open source databases
![]() |
•
•
Join Date: Jul 2006
Posts: 6
Reputation:
Solved Threads: 0
Hi!
I'm trying to create a page with dynamic controls, and I'm having difficulty wrt the liffe cycle.
The page has some static controls, but also a table which has dynamic rows, cells of which contain dynamic controls, including a DropDownList.
The idea is that the page has an "Add" button, which should result in a new row being added to the table. The selected values in the earlier DropDownLists must be preserved.
So, first time the page looks like:
[Static Controls]
[TableRow1 [DropDownList1]]
[Add Button]
Clicking the button should result in:
[Static Controls]
[TableRow1 [DropDownList1]]
[TableRow2 [DropDownList2]]
[Add Button]
with DropDownList1 selection being preserved.
The Button click event code tries to read the current selections of the DDLs and store them in session, It then causes a redirect to the same page, forcing the page to be drawn as new (from the life cycle point of view).
My sequence of code is:
where populate() sets up the static controls with data retrieved from a database (first time) or session (subsequently), and
populateVolatile() creates and fills the dynamic controls depending on the session data, including DDL selections.
It contains the code:
The button click code is as follows:
I know the redirect creates an extra trip to the server, but I couldn't find a useful way to enable redrawing after the button event.
Everything works fine except for the DDL selection handling - I cannot set or correctly read the selections.
Help!
John
I'm trying to create a page with dynamic controls, and I'm having difficulty wrt the liffe cycle.
The page has some static controls, but also a table which has dynamic rows, cells of which contain dynamic controls, including a DropDownList.
The idea is that the page has an "Add" button, which should result in a new row being added to the table. The selected values in the earlier DropDownLists must be preserved.
So, first time the page looks like:
[Static Controls]
[TableRow1 [DropDownList1]]
[Add Button]
Clicking the button should result in:
[Static Controls]
[TableRow1 [DropDownList1]]
[TableRow2 [DropDownList2]]
[Add Button]
with DropDownList1 selection being preserved.
The Button click event code tries to read the current selections of the DDLs and store them in session, It then causes a redirect to the same page, forcing the page to be drawn as new (from the life cycle point of view).
My sequence of code is:
ASP Syntax (Toggle Plain Text)
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { populate(); } populateVolatile(); }
where populate() sets up the static controls with data retrieved from a database (first time) or session (subsequently), and
populateVolatile() creates and fills the dynamic controls depending on the session data, including DDL selections.
It contains the code:
ASP Syntax (Toggle Plain Text)
// add each type/num info to table foreach (TypeNumInfo tni in volInfo.typeNumRows) { TableRow tr = new TableRow(); // index number TableCell tc1 = new TableCell(); tc1.Text = tni.idx.ToString(); tr.Cells.Add(tc1); // add a DDL TableCell tc2 = new TableCell(); DropDownList ddl = new DropDownList(); // add ID and list data ddl.ID = "ddl" + tni.idx; foreach (ListItem li in dTypes) { ddl.Items.Add(li); } // set the selected // TODO not working ddl.SelectedIndex = tni.typeSel; tc2.Controls.Add(ddl); tr.Cells.Add(tc2); tblTypeNum.Rows.Add(tr); }
The button click code is as follows:
ASP Syntax (Toggle Plain Text)
protected void bAddTypeNum_Click(object sender, EventArgs e) { // get dept, applies selections from static controls statInfo.selDept = ddlDept.SelectedIndex; statInfo.selApplies = ddlApplies.SelectedIndex; // create new type/num info representing tablerow data TypeNumInfo tni = new TypeNumInfo(); int lastIdx = volInfo.typeNumRows.Count; tni.idx = lastIdx + 1; // add to list volInfo.typeNumRows.Add(tni); // cache previous rows int i = 0; foreach (TableRow tr in tblTypeNum.Rows) { // if row has droplist, i.e. more than 1 cell if (tr.Cells.Count > 1) { DropDownList ddl = (DropDownList)tr.Cells[1].Controls[0]; // get the selection in that row // TODO not working reliably volInfo.typeNumRows[i++].typeSel = ddl.SelectedIndex; } } // update session Session[strStat] = statInfo; Session[strVol] = volInfo; // draw as new page Response.Redirect(""); }
I know the redirect creates an extra trip to the server, but I couldn't find a useful way to enable redrawing after the button event.
Everything works fine except for the DDL selection handling - I cannot set or correctly read the selections.
Help!
John
![]() |
Other Threads in the ASP Forum
- Previous Thread: Links in Tables
- Next Thread: need help with VBScript coding
| Thread Tools | Search this Thread |
archive asp asp.net aspandmssqlserver2005 aspandmssqlserver2005connection aspconnection connection database databaseconnection dreamweaver excel fso iis msmsql mssql2005 mssqlserver2005 mssqlserver2005andasp mssqlserverandasp opentextfile record searchbox selectoption single specfic sqlserver sqlserverconnection windows7





