1

使用 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>

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

4

2 回答 2

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);
于 2013-02-05T01:19:54.343 回答
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;
        }
    }
}
于 2013-02-05T05:53:25.150 回答