0

我创建了一个动态创建表格的网页。表中的一列是具有 ID(int) 的复选框。我想使用 SQL 查询中所有复选框的 ID,如下所示:

select * 
from table 
where ID in (1,2,3,4)

有没有办法可以从所有复选框中获取 ID 列表?

我正在使用 C#.Net

这是我用来生成复选框的代码片段:

foreach (DataRow dr in dt.Rows)
{
    string Compatible_Controls = (
        "<tr>" +
        "<td><input type='CheckBox' ID='" +(dr["id"]) + "' /></td>" +
        "<td>" + (dr["Control_Name"]) + "</td>" +
        "<td>" + (dr["Control_Statement"]) + "</td>" +
        "<td>" + (dr["Regulation_type"]) + "</td>" +
        "</tr> );

这是生成的内容:

<tr>
    <td><input type='CheckBox' ID='3' /></td>
    <td>xxxxxx</td>
    <td>xxxxxxxxx</td>
    <td>xxxxxxxx</td>
</tr>

非常感谢你!!!!!

4

2 回答 2

0

如果您将所有复选框命名为相同的名称,将复选框的值设置为 id,并让您的控制器接受一个整数列表,它将返回已选中的复选框。

像这样:

看法:

<input type='checkbox' name='check' value='1'>
<input type='checkbox' name='check' value='2'>
<input type='checkbox' name='check' value='3'>
<input type='checkbox' name='check' value='4'>

控制器:

public ActionResult CheckBoxes(IList<int> checkIds)
{
  //checkIds will contain the "value" of all the checkboxes that are checked when the form is submitted.
}
于 2013-03-28T20:20:56.417 回答
0

此代码未经测试,但基本逻辑应该是正确的。这个想法是遍历页面上的所有控件,挑选出其 ID 以设置前缀开头的控件。

首先,在数字 ID 前添加前缀:

string ID_Prefix = "MyCheckbox_";

string Compatible_Controls = (
                 "<tr>" +
                      "<td><input type='CheckBox' ID='" + ID_prefix 
                                + (dr["id"]) + "' /></td>" +
                      "<td>" + (dr["Control_Name"]) + "</td>" +
                      "<td>" + (dr["Control_Statement"]) + "</td>" +
                      "<td>" + (dr["Regulation_type"]) + "</td>" +
                "</tr> );

这将创建如下 HTML:

<td><input type='CheckBox' ID='MyCheckbox_3' /></td>

现在,当您要解析页面时调用它:

List<string> GetMyCheckboxes(ControlCollection coll, List<string> ids)
{
    foreach (Control ctl in coll)
    {
        if (ctl.ID.StartsWith(ID_Prefix))
            ids.Add(ctl.ID.Substring(ID_Prefix.Length)); // only take the number

        if (ctl.Controls.Count > 0)
            ids = GetInputs(ctl.Controls, ids);
    }
    return ids;
}

像这样称呼它:

List<string> ids = GetMyCheckboxes(Page.Controls, new List<string>());

您最终会得到一个仅包含 ID 的列表。

于 2013-03-28T22:51:46.713 回答