使用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>
我如何才能获得它,以便从这样的列表中获取已选中复选框的列表?每行都有一个复选框。
答案 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;
}
}
}