Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 循环检查表中的所有复选框_C#_Asp.net - Fatal编程技术网

C# 循环检查表中的所有复选框

C# 循环检查表中的所有复选框,c#,asp.net,C#,Asp.net,我有一个表格单元格,在运行时用复选框和标签填充 List<string> lstUserPool = new List<string>(); DataTable dt = GetData("SELECT UserName FROM eData ORDER BY UserName;", "Data Source = lewcomp1\\COMPLIANCE; Initial Catalog = ComplianceData; Integrated Security = Tr

我有一个表格单元格,在运行时用复选框和标签填充

List<string> lstUserPool = new List<string>();
DataTable dt = GetData("SELECT UserName FROM eData ORDER BY UserName;", "Data Source = lewcomp1\\COMPLIANCE; Initial Catalog = ComplianceData; Integrated Security = True;");

for (int i = 1; i < dt.Rows.Count; i++)
{
    CheckBox cb = new CheckBox();
    cb.ID = "cb" + dt.Rows[i]["Username"].ToString();
    Label lbl = new Label();
    lbl.ID = "lbl" + dt.Rows[i]["Username"].ToString();
    lbl.Text = dt.Rows[i]["Username"].ToString();
    lbl.Font.Size = new FontUnit("18px");

    if (IsOdd(i))
    {
        cellUsersPoolLeft.Controls.Add(cb);
        cellUsersPoolLeft.Controls.Add(lbl);
        cellUsersPoolLeft.Controls.Add(new LiteralControl("<br/>"));
    }

    if (IsEven(i))
    {
        cellUsersPoolRight.Controls.Add(cb);
        cellUsersPoolRight.Controls.Add(lbl);
        cellUsersPoolRight.Controls.Add(new LiteralControl("<br/>"));
    }
}
List lstUserPool=new List();
DataTable dt=GetData(“按用户名从eData ORDER中选择用户名;”,“数据源=lewcomp1\\COMPLIANCE;初始目录=ComplianceData;集成安全性=True;”;
对于(int i=1;i”);
}
if(IsEven(i))
{
cellUsersPoolRight.Controls.Add(cb);
cellUsersPoolRight.Controls.Add(lbl);
cellUsersPoolRight.Controls.Add(新的LiteralControl(“
”); } }
稍后,我想通过这些复选框来检查哪些是选中的,哪些不是。我试过在SO上找到的各种例子,但都不走运。就好像复选框不在我添加到的TableCell中一样。以下两个循环都找不到任何复选框控件:

foreach (Control ctl in cellUsersPoolRight.Controls)
{
    if (ctl is CheckBox)
    {

    }
}
//foreach(var checkBox in cellUsersPoolRight.Controls.OfType<CheckBox>())
//{
//    if (checkBox.Checked)
//    {
//        naz.Add(checkBox.ID);
//    }
//}
foreach(cellUsersPoolRight.Controls中的控制ctl)
{
如果(ctl为复选框)
{
}
}
//foreach(cellUsersPoolRight.Controls.OfType()中的var复选框)
//{
//如果(复选框。选中)
//    {
//naz.Add(checkBox.ID);
//    }
//}

对不起,我还不能写评论

在哪个事件上尝试添加控件,在哪个事件上尝试读取控件

看一看这篇文章,了解更多。
检查第页上的事件顺序,以及您是否在生命周期中使用了正确的事件

对不起,我还不能写评论

在哪个事件上尝试添加控件,在哪个事件上尝试读取控件

看一看这篇文章,了解更多。
检查第页上的事件顺序,以及您是否在生命周期中使用了正确的事件

我建议您使用转发器,并在转发器中将复选框和标签数据绑定到ItemTemplate。这将很容易让您通过中继器循环获取数据。如果需要其他数据,请在中继器中添加Hiddenfield以存储这些数据

 <asp:Repeater ID="UserRepeater" runat="server">
                    <HeaderTemplate>
                      <table>
                    </HeaderTemplate>
                    <ItemTemplate>
                      <tr>
                        <td>
                          <asp:CheckBox  ID="UserCheckBox" runat="server" Checked='<%# Convert.ToBoolean(Eval("IsUserChecked")) %>' ToolTip='<%# Eval("UserId") %>'
                            onmouseover="title='';" />
                        </td>
                        <td>
                          <asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
                        </td>
                      </tr>
                    </ItemTemplate>
                    <FooterTemplate>
                      </table>
                    </FooterTemplate>
                  </asp:Repeater>
然后在图像按钮的回发中,单击可从中继器获取项目

    foreach (RepeaterItem ri in UserRepeater.Items)
              {
                CheckBox userCheckBox = ri.FindControl("UserCheckBox") as CheckBox;
              }

我建议您使用Repeater并将复选框和标签数据绑定到Repeater中的ItemTemplate。这将很容易让您通过中继器循环获取数据。如果需要其他数据,请在中继器中添加Hiddenfield以存储这些数据

 <asp:Repeater ID="UserRepeater" runat="server">
                    <HeaderTemplate>
                      <table>
                    </HeaderTemplate>
                    <ItemTemplate>
                      <tr>
                        <td>
                          <asp:CheckBox  ID="UserCheckBox" runat="server" Checked='<%# Convert.ToBoolean(Eval("IsUserChecked")) %>' ToolTip='<%# Eval("UserId") %>'
                            onmouseover="title='';" />
                        </td>
                        <td>
                          <asp:Label ID="UserNameLabel" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
                        </td>
                      </tr>
                    </ItemTemplate>
                    <FooterTemplate>
                      </table>
                    </FooterTemplate>
                  </asp:Repeater>
然后在图像按钮的回发中,单击可从中继器获取项目

    foreach (RepeaterItem ri in UserRepeater.Items)
              {
                CheckBox userCheckBox = ri.FindControl("UserCheckBox") as CheckBox;
              }

这是一个图像按钮单击事件确定:)在web应用程序中,整个过程将发生在每次回发上,因此您不能向控件中添加某些内容,并期望在下次回发时它会出现。要解决此问题,您必须将数据添加到数据容器中,然后将数据源绑定到控件,或者自己从数据源添加。这是一个图像按钮单击事件确定:)在web应用程序中,整个过程将在每次回发时进行,因此,您不能向控件中添加某些内容,并期望它在下次回发时出现。要解决这个问题,您必须将数据添加到数据容器中,然后将数据源绑定到控件,或者自己从数据源添加数据。我非常喜欢这种方法,第一次使用中继器。谢谢你知道我如何修改ItemTemplate以允许两列数据而不是一列数据吗?它非常强大,在我使用了几次之后,我就可以控制列表了。它非常适合于复选框列表。我有一些很棒的javascript,我用jquery检查或取消检查它们。这也是一个非常有用的特性,它已经有两列了。查看1列/td代表复选框,1列/td代表用户名。如果您想添加更多,只需添加td标记和其他数据。这是一个相当棘手的问题。我通常只为中继器设置div容器的高度,并允许滚动。您可以设置2个中继器和2个数据源,然后基本上分别分页数据源,先占50%,然后占最后50%。最好的解决方案是放弃table方法,将每个项目设为一个具有固定宽度的div,然后将它们向左浮动。给中继器的容器一个固定的高度,项目将向左流动,并创建适合空间的列。这应该是响应性的。这基本上是第二个问题。@MitchelStuartFountaine这是你需要的。只有我非常喜欢这种方法,第一次使用中继器。谢谢你知道我如何修改ItemTemplate以允许两列数据而不是一列数据吗?它非常强大,在我使用了几次之后,我就可以控制列表了。它非常适合于复选框列表。我有一些很棒的javascript,我用jquery检查或取消检查它们。这也是一个非常有用的特性,它已经有两列了。查看1列/td代表复选框,1列/td代表用户名。如果您想添加更多,只需添加td标记和其他数据。这是一个相当棘手的问题。我通常只为中继器设置div容器的高度,并允许滚动。您可以设置2个中继器和2个数据源,然后基本上分别分页数据源,先占50%,然后占最后50%。最好的解决方案是放弃table方法,将每个项目设为一个具有固定宽度的div,然后将它们向左浮动。给中继器的容器一个固定的高度,项目将向左流动,并创建适合空间的列。这应该是响应性的。这基本上是第二个问题。@MitchelStuartFountaine这是你需要的。仅CSS