【问题标题】:How to Find Checkbox within Asp.net panel?如何在 Asp.net 面板中查找复选框?
【发布时间】:2011-10-19 16:53:39
【问题描述】:

我在面板中找不到复选框。这是我的代码。在页面加载时,我添加了动态控件。它正确加载所有控件:

if(!Page.IsPostBack){
foreach (var chk in chks)
{
   PlSettings.Controls.Add(new LiteralControl("<div class=\"Controls\">"));

   PlSettings.Controls.Add(chk);

   PlSettings.Controls.Add(new LiteralControl("</div>"));
}
}

在按钮更新时,我想遍历面板中的所有控件,如果是复选框类型,请检查它是否被选中。

foreach (var panelctrl in PlSettings.Controls)
            {

                  if (panelctrl.GetType() == typeof(CheckBox))
                   {
                      var checkbox = (CheckBox)chk;

                      if (checkbox.Checked)
                       {
                                userSettings.Add(Convert.ToInt32(checkbox.ID));
                       }
                   }

            }

出于某种原因,Panel 只有一个文字控件。并且内部没有控件。

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    使用以下代码更新 foreach:

    // if(!Page.IsPostBack){
    foreach (var chk in chks)
    {
       PlSettings.Controls.Add(new LiteralControl("<div class=\"Controls\">"));
    
       PlSettings.Controls.Add(chk);
    
       PlSettings.Controls.Add(new LiteralControl("</div>"));
    }
    //}
    

    您必须在每次回发时添加动态控件。此外,请确保在初始化或预初始化阶段完成此操作。

    【讨论】:

      【解决方案2】:

      试试这样的方法:

      foreach (CheckBox chk in PlSettings.Controls.OfType<CheckBox>())
      {
          //code here
      }
      

      由于这些控件是动态生成的,因此您需要在每次回发时重新创建控件。确保每次也为控件分配相同的 ID,以便 ViewState 可以重新加载选中状态。

      【讨论】:

        猜你喜欢
        • 2011-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        相关资源
        最近更新 更多