簡體   English   中英

在頁面中找不到Checkbox控件

[英]Cannot find Checkbox controls in page

我試圖在頁面上取回復選框並將其文本插入數據庫。 當我單擊提交按鈕時,它找不到任何Checkbox控件。 我試圖通過所有列舉,並插入每個。 我需要使用單獨的復選框而不是此項目的復選框列表,以防有人建議我使用列表。 為什么我的控件不顯示?

C#-提交按鈕

protected void Submit_Click(object sender, EventArgs e)
{
// removed code to shorten up
  foreach (Control c in Page.Controls)
  {
    foreach (Control childc in c.Controls)
    {
      if ((childc is CheckBox) && ((CheckBox)childc).Checked)
      {
         cmd.Parameters.Clear();
         cmd.Parameters.AddWithValue("@Name", ((CheckBox)childc).Text);
         cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now.ToString());
         cmd.ExecuteNonQuery();
       }
    }
  }
}

C# - 創建復選框並將其插入面板。 我點擊一個名為Submit_Click_Generate的按鈕,調用此按鈕並填充/創建復選框。

protected void Submit_Click_Generate(object sender, EventArgs e)
{
// removed code to shorten up
  foreach (System.Xml.XmlNode node in nodes)
  {
     string displayname = node.SelectSingleNode("FName").InnerText.Trim();
     string idnumber = node.SelectSingleNode("idNum").InnerText.Trim();
     CheckBox ckBox = new CheckBox();
     ckBox.InputAttributes.Add("value", idnumber);
     panel1.Controls.Add(new LiteralControl("<div class='checkbox checkbox-slider-lg checkbox-slider--b-flat'><label>"));
     panel1.Controls.Add(ckBox);
     panel1.Controls.Add(new LiteralControl("<span>" + displayname + "</span></label></div>"));
    }
}

我所有的復選框都動態插入到我頁面的此面板中

.ASPX

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
   <form id="form1" runat="server">
       <asp:Button ID="btn" runat="server" OnClick="Submit_Click_Generate" Text="Generate" />
       <asp:Panel ID="panel1" runat="server"></asp:Panel>
       <asp:Button ID="btn1" runat="server" OnClick="Submit_Click" Text="Save" />
   </form>
</asp:Content>

也試過這個,但它沒有拿起控件:

foreach (var ctrl in this.Controls.OfType<CheckBox>().Where(x => x.Checked))

采用...

 foreach (Control childc in panel1.Controls)
  {
    if ((childc is CheckBox) && ((CheckBox)childc).Checked)
    {
       cmd.Parameters.Clear();
       cmd.Parameters.AddWithValue("@Name", ((CheckBox)childc).Text);
       cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now.ToString());
       cmd.ExecuteNonQuery();
     }
  }

對於動態生成的控件,您需要在單擊提交按鈕時在頁面的onInit事件中重新創建。根據以下鏈接: 為什么動態創建的用戶控件在控件未執行完全回發時消失

您需要在每個Page Init事件上填充它們以保持Viewstate,在按鈕單擊期間添加到更新面板內的控件的事件似乎在下一個Postback之前不會被注冊。 我的建議是保留動態添加的列表,並將其存儲在會話變量中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM