Dynamic Controls Viewstate
Jeg har et problem med dynamiske kontroller i .net 2.0.Jeg kan ikke få dem til at beholde deres viewstate. Jeg har prøvet forskellige ting, men kan simpelthen ikke få det til at virke.
Lige meget om jeg laver mine dropdownlister i OnInit eller Page_Load, så når jeg siden poster back kan jeg ikke få kontrollerne til at få den værdi jeg har givet dem manuelt på siden.
Jeg har prøvet at sætte værdier på dem i Page_Load (på postback), men de bliver overskrevet mellem Page_load og Page_Prerender - jeg ved ikke om det har noget med ViewState at gøre.
Håber der er nogle der kan fortælle mig hvad jeg gør forkert.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
AddFields(true);
else
AddFields(false);
}
protected void AddFields(bool blnSetDatabaseValue)
{
Response.Write("test " + blnSetDatabaseValue);
HtmlTable htDropdown = new HtmlTable();
for (int i = 0; i < 5; i++)
{
HtmlTableCell htdText = new HtmlTableCell();
htdText.Width = "320";
Label lblText = new Label();
lblText.Text = "test" + i;
htdText.Controls.Add(lblText);
HtmlTableRow htrDropdown = new HtmlTableRow();
HtmlTableCell htdDropdown = new HtmlTableCell();
DropDownList ddlDrop = new DropDownList();
ddlDrop.Attributes.Add("runat", "server");
ddlDrop.ID = i.ToString();
ListItem lItem = new ListItem();
lItem.Text = "Categorical";
lItem.Value = "100";
ddlDrop.Items.Add(lItem);
lItem = new ListItem();
lItem.Text = "Long";
lItem.Value = "100";
if (blnSetDatabaseValue)
lItem.Selected = true;
ddlDrop.Items.Add(lItem);
if (Trace.IsEnabled)
Trace.Write(ddlDrop.SelectedIndex + "<br>");
//htdDropdown.Controls.Add(hSelect);
htdDropdown.Controls.Add(ddlDrop);
htrDropdown.Controls.Add(htdText);
htrDropdown.Controls.Add(htdDropdown);
htDropdown.Controls.Add(htrDropdown);
}
htdDropdowns.Controls.Add(htDropdown);
}