具有不同行数的C#中继器,每个行能够使用复选框/其他方法返回不同的字符串

具有不同行数的C#中继器,每个行能够使用复选框/其他方法返回不同的字符串,c#,asp.net,sql-server,checkbox,repeater,C#,Asp.net,Sql Server,Checkbox,Repeater,我正在创建的Asp.net网站使用一个转发器来显示两个数据库中重复项或缺失项的字符串列表。还有一个与SQL语句并行创建的字符串列表,其中一个SQL语句对应于中继器列表中相同编号的字符串。列表中的字符串数取决于所选的数据库,范围从零到100+ 问题:由于中继器行的数量未知,我试图找到一些方法来生成未知数量的复选框/按钮(每行一个)。单击时,复选框/按钮将在另一个列表中为单独的方法中的行找到相应的SQL语句。有人知道如何创建数量可变的复选框吗?这可以通过向按钮添加CommandArgument并向其

我正在创建的Asp.net网站使用一个转发器来显示两个数据库中重复项或缺失项的字符串列表。还有一个与SQL语句并行创建的字符串列表,其中一个SQL语句对应于中继器列表中相同编号的字符串。列表中的字符串数取决于所选的数据库,范围从零到100+


问题:由于中继器行的数量未知,我试图找到一些方法来生成未知数量的复选框/按钮(每行一个)。单击时,复选框/按钮将在另一个列表中为单独的方法中的行找到相应的SQL语句。有人知道如何创建数量可变的复选框吗?

这可以通过向按钮添加CommandArgument并向其分配
命令来完成,而不是单击

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("myColumn") %>'></asp:Label>
        <br />
        <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("ID") %>' OnCommand="Button1_Command" Text="Button" />
        <hr />
    </ItemTemplate>
</asp:Repeater>

<asp:Label ID="Label2" runat="server" Text=""></asp:Label>
如果你想读一个复选框,你需要在代码隐藏中稍微多一些代码

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("field01") %>'></asp:Label>
        <br />
        <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean(Eval("itemid")) %>' />
        <br />
        <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("itemid") %>' OnCommand="Button1_Command" Text="Button" />
        <hr />
    </ItemTemplate>
</asp:Repeater>

protected void Button1_Command(object sender, CommandEventArgs e)
{
    Button btn = sender as Button;
    RepeaterItem item = (RepeaterItem)btn.NamingContainer;
    CheckBox cb = item.FindControl("CheckBox1") as CheckBox;

    Label2.Text = "Item with ID " + e.CommandArgument + " has checkbox " + cb.Checked;
}




受保护的void Button1_命令(对象发送方,CommandEventArgs e) { 按钮btn=发送方为按钮; RepeaterItem=(RepeaterItem)btn.NamingContainer; 复选框cb=item.FindControl(“复选框1”)作为复选框; Label2.Text=“ID为“+e.CommandArgument+”的项具有复选框“+cb.Checked”; }
是否可以为具有未知行数的中继器中的每一行生成复选框/按钮?是的,这就是中继器处理
项目模板中的项目时所做的操作
感谢您的帮助。
<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Eval("field01") %>'></asp:Label>
        <br />
        <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean(Eval("itemid")) %>' />
        <br />
        <asp:Button ID="Button1" runat="server" CommandArgument='<%# Eval("itemid") %>' OnCommand="Button1_Command" Text="Button" />
        <hr />
    </ItemTemplate>
</asp:Repeater>

protected void Button1_Command(object sender, CommandEventArgs e)
{
    Button btn = sender as Button;
    RepeaterItem item = (RepeaterItem)btn.NamingContainer;
    CheckBox cb = item.FindControl("CheckBox1") as CheckBox;

    Label2.Text = "Item with ID " + e.CommandArgument + " has checkbox " + cb.Checked;
}