【发布时间】:2014-01-24 02:16:39
【问题描述】:
当用户选中/取消选中复选框并提交时,我从服务器端动态创建了复选框控件。 干净的 HTML 代码就是这样
<form id="form1" runat="server" method="post">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="pnlGroupAdd" runat="server" DefaultButton="Publish">
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button Text="Publish" runat="server" ID="Submit" OnClick="Submit_Click" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</form>
public partial class Premission : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
XmlDocument doc = new XmlDocument();
// Code for fetch doc and datatable dt etc
foreach (XmlNode node in doc.DocumentElement.SelectNodes("/config/permission"))
{
string text = node.InnerText; //or loop through its children as well
CheckBox cbModels = new CheckBox();
cbModels.ID = "cbPremissionID_" + node["id"].InnerText;
cbModels.Text = node["displayName"].InnerText + "<br/>";
cbModels.Checked = false;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (cbModels.ID.Trim() == "cbPremissionID_" + dt.Rows[i][0].ToString().Trim())
{
cbModels.Checked = true;
dt.Rows.RemoveAt(i);
break;
}
}
PlaceHolder1.Controls.Add(cbModels);
}
}
}
protected void Submit_Click(object sender, EventArgs e)
{
if (PlaceHolder1.Controls.Count > 0)
{
foreach (Control item in PlaceHolder1.Controls)
{
if (item.GetType().FullName == "System.Web.UI.WebControls.CheckBox")
{
// submit check box data to database
}
}
}
}
}
在 Submit_Click 上无法访问复选框数据。
【问题讨论】: