【问题标题】:Dynamically Created checkbox Controls lost data on submit动态创建的复选框控制提交时丢失的数据
【发布时间】: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 上无法访问复选框数据。

【问题讨论】:

    标签: asp.net .net checkbox


    【解决方案1】:

    您应该在 Page_Load 之前的 Page_Init 事件中初始化您的动态控件。

    请阅读这篇关于asp.net页面生命周期的文章,它可以让你免于未来的很多痛苦:http://msdn.microsoft.com/en-us/library/ms178472.aspx

    protected void Page_Init(object sender, EventArgs e)
    {
            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);
    
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 1970-01-01
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 2013-01-25
      相关资源
      最近更新 更多