带有复选框的名称列表

时间:2013-02-05 01:15:45

标签: asp.net .net listview checkbox

使用asp.net我需要列出名称和ID,并且每行都有一个复选框

例如

<table>
    <tr>
        <td>ID</td>
        <td>Name</td>
        <td><input type="checkbox" name="id"/></td>
    </tr>
</table>

但它需要是一个列表视图,只需使用它的布局模板。

可能喜欢这个

<asp:ListView runat="server" ID="ListView1">
    <LayoutTemplate>
        <table runat="server" id="table1" >
            <tr runat="server" id="itemPlaceholder" ></tr>
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr id="Tr1" runat="server">
            <td id="Td1" runat="server">
                <asp:Label ID="IdLabel" runat="server" 
                    Text='<%#Eval("CFId") %>' />
            </td>
            <td id="Td2" runat="server">
                <asp:Label ID="NameLabel" runat="server" 
                    Text='<%#Eval("CFName") %>' />
            </td>
            <td id="Td3" runat="server">
                <asp:Checkbox ID="Checkbox" runat="server" 
                    name='<%#Eval("CFId") %>' />
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>

我如何才能获得它,以便从这样的列表中获取已选中复选框的列表?每行都有一个复选框。

2 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您可能需要使用System.Web.UI.WebControls.CheckBoxList

var r = from item in list.Items.Cast<ListItem>()
        where i.Selected
        select i.Value;

或扩展方法语法中的相同内容:

var r = list.Items.Cast<ListItem>()
                  .Where(i => i.Selected)
                  .Select(i => i.Value);

答案 1 :(得分:1)

<强> ASPX:

<asp:ListView runat="server" ID="ListView1">
    <LayoutTemplate>
        <table runat="server" id="table1">
            <tr runat="server" id="itemPlaceholder">
            </tr>
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr id="Tr1" runat="server">
            <td id="Td1" runat="server">
                <asp:Label ID="IdLabel" runat="server" Text='<%#Eval("CFId") %>' />
            </td>
            <td id="Td2" runat="server">
                <asp:Label ID="NameLabel" runat="server" Text='<%#Eval("CFName") %>' />
            </td>
            <td id="Td3" runat="server">
                <asp:CheckBox ID="Checkbox" runat="server" />
            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>
<asp:Button ID="btnGetChecked" runat="server" Text="Get Checked Items" OnClick="GetChecked" />

代码背后:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        var table = new DataTable();
        table.Columns.Add("CFId");
        table.Columns.Add("CFName");

        table.Rows.Add("1", "Item 1");
        table.Rows.Add("2", "Item 2");
        table.Rows.Add("3", "Item 3");

        ListView1.DataSource = table;
        ListView1.DataBind();
    }
}

protected void GetChecked(object sender,EventArgs e)
{
    var items = ListView1.Items.Where(i => ((CheckBox)i.FindControl("Checkbox")).Checked);
    foreach (ListViewItem item in items)
    {
        Label IdLabel = item.FindControl("IdLabel") as Label;
        Label NameLabel = item.FindControl("NameLabel") as Label;

        if (IdLabel != null && NameLabel != null)
        {
            string id = IdLabel.Text;
            string name = NameLabel.Text;
        }
    }
}