1

フォーム内のすべての html チェックボックスをループできるようにしたいと思います。チェックされている場合は、何か他のことを行います。また、Javascript\jquery を使用せずにコード ビハインドでこれを行いたいと考えています。

<form id="form1" runat="server">
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    <div>
  <table width="850" border="0" cellpadding="0" cellspacing="10" class="Copy" >
    <tr>
      <td valign="top"><table width="200" border="0" cellspacing="0" cellpadding="3" bgcolor="#f0f4f8">
          <tr>
            <td width="21">&nbsp;</td>
            <td width="179"><strong>CheckBoxes</strong></td>
          </tr>
          <tr>
            <td><input runat="server" type="checkbox" name="checkbox1" id="checkbox1" /></td>
            <td>checkbox1</td>
          </tr>
          <tr>
            <td><input runat="server" type="checkbox" name="checkbox2" id="checkbox2" /></td>
            <td>checkbox2</td>
          </tr>
          <tr>
            <td><input runat="server" type="checkbox" name="checkbox3" id="checkbox3" /></td>
            <td>checkbox3</td>
          </tr>
        </table>
    </div>
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    </form>

コードビハインドでは、いくつかの異なる方法を試しましたが、チェックボックス タイプの HTML 入力コントロールであるため、機能していないと推測しています。

 foreach (CheckBox chk in Page.Form.Controls.OfType<CheckBox>())
        {

            if (chk.Checked == true)
            {
                Label1.Text = "we have checkboxes";
            }
            else
            {
                Label1.Text = "Still no checkboxes";
            }

        }
4

2 に答える 2

3

いくつかの方法:

foreach (Control item in this.form1.Controls)
{
    //We just need HtmlInputCheckBox 
    System.Web.UI.HtmlControls.HtmlInputCheckBox _cbx = item as System.Web.UI.HtmlControls.HtmlInputCheckBox;
    if (_cbx != null)
    {
        if (_cbx.Checked)
        {
            //Do something: 
            Response.Write(_cbx.Name + " was checked.<br />");
        }
    }

}

また

//We just need HtmlInputCheckBox
IEnumerable<Control> _ctrls = from Control n in this.form1.Controls where n as System.Web.UI.HtmlControls.HtmlInputCheckBox != null select n;

if (_ctrls.Count() > 0)
{
    foreach (System.Web.UI.HtmlControls.HtmlInputCheckBox item in _ctrls)
    {
        if (item.Checked)
        {
            //Do something:
            Response.Write(item.Name + " was checked.<br/><br />");
        }
    }
}

お役に立てれば....

于 2013-09-08T17:37:18.390 に答える
0

CheckBoxes の ID がわかっている場合は、次を使用して試すことができます: FindControl Control.FindControl-Methode (String)

それは素晴らしい解決策ではありません。これを使用してみてください:

bool cFound = true;
while(cFounnd)
{
    var cCheckBox = this.FindControl(...);

    if(cCheckBox != null)
    {
        ....
    }
    else
    {
        cFound = false;
    }
}

編集: 多分あなたはこれを試してください: ControlFinder

于 2013-09-08T15:22:18.727 に答える