从复选框中获取选定的值,并将其放在表中的一行中

本文关键字:一行 获取 复选框 | 更新日期: 2023-09-27 18:29:34

Hy-all,

我正在开发一个web应用程序,并尝试使用复选框列表。我希望为该复选框列表中的每个选定项目在表中创建一个新行。因此,如果我有5个项目,我选中3个,我希望一个表显示3行,每行中都有选定的项目。这就是我检查项目的方式:

 protected void Button1_Click(object sender, EventArgs e)
    {
        string str = string.Empty;
        foreach (ListItem item in check.Items)
        {
            str += item.Value;
        }
    }

我的问题是:如何用选定的值创建一个表??我在asp.net应用程序中使用c#

从复选框中获取选定的值,并将其放在表中的一行中

您需要在每次回发时重新创建此表,因为它是动态创建的。

http://weblogs.asp.net/infinitiesloop/archive/2006/08/30/TRULY-Understanding-Dynamic-Controls-_2800_Part-3_2900_.aspx

以下是工作示例代码:

<asp:CheckBoxList ID="check" runat="server">
    <asp:ListItem Text="Item 1" Value="1"></asp:ListItem>
    <asp:ListItem Text="Item 2" Value="2"></asp:ListItem>
    <asp:ListItem Text="Item 3" Value="3"></asp:ListItem>
</asp:CheckBoxList>
<asp:Button ID="Button1" runat="server" Text="Apply Selection" OnClick="Button1_Click" />
<asp:Table ID="TblCheck" runat="server"></asp:Table>

编码背后:

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack) RecreateTable();
}
private void RecreateTable()
{
    var selected = this.check.Items.Cast<ListItem>().Where(i => i.Selected);
    foreach (var item in selected)
    {
        TableRow row = new TableRow();
        TableCell cell = new TableCell();
        Label lbl = new Label();
        lbl.Text = item.Text;
        cell.Controls.Add(lbl);
        row.Cells.Add(cell);
        this.TblCheck.Rows.Add(row);
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    //RecreateTable();
}

按钮点击处理程序在从page_load创建时甚至不需要创建它。