-1
我已經創建了面板裏面有一個表,反過來,我已經動態地創建了複選框。動態創建複選框ID沒有找到
int RoleCount = CountRoles();
string[] RoleName = RoleNames();
CheckBox[] chk = new CheckBox[RoleCount];
Table TableCheckBox = new Table();
TablePanel.Controls.Add(TableCheckBox);
TableRow tRow = new TableRow();
for (int i = 0; i < RoleCount; i++)
{
chk[i] = new CheckBox();
chk[i].ID = "chk" + RoleName[i];
chk[i].Text = RoleName[i];
chk[i].ClientIDMode = System.Web.UI.ClientIDMode.Static;
TableCell tCell = new TableCell();
tCell.Controls.Add(chk[i]);
if (i != 0 && i % 3 == 0)
{
TableCheckBox.Rows.Add(tRow);
tRow = new TableRow();
}
if (i < RoleCount)
tRow.Cells.Add(tCell);
TableCheckBox.Rows.Add(tRow);
}
現在,如果我想通過代碼找到這個控件,那麼它不起作用。 cb返回null。
int RoleCount = CountRoles();
string[] RoleName = RoleNames();
string chkboxbit = " ";
try
{
foreach (string s in RoleName)
{
for (int i = RoleCount-1; i >= 0; i--)
{
chkboxbit = "chk" + RoleName[i];
ContentPlaceHolder cph = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
Panel panel = (Panel)cph.FindControl("TablePanel");
System.Web.UI.HtmlControls.HtmlTable table = (System.Web.UI.HtmlControls.HtmlTable)panel.FindControl("TableCheckBox");
System.Web.UI.HtmlControls.HtmlInputCheckBox cb = (System.Web.UI.HtmlControls.HtmlInputCheckBox)table.FindControl(chkboxbit);
if (cb != null)
cb.Checked= false;
}
}
}
catch
{
Response.Redirect("Error.aspx");
}
我該怎麼辦?
你必須(重新)在每個回傳中創建所有動態創建的控件,最晚在'Page_Load'中創建,並且具有與以前相同的ID。所有對象都放置在頁面生命週期的末尾。所以你只需要堅持信息已經創建了多少控件。我不知道'CountRoles()'如何得到數字,你可以使用'Session'或'ViewState'。 –
嘿蒂姆! cb仍然返回null。 – Mayank
你使用過調試器嗎?代碼有點混亂。爲什麼你有'if(我