从ListView中获取选定的复选框值
本文关键字:复选框 ListView 获取 | 更新日期: 2023-09-27 18:19:53
我在ListView中有以下标记,每行都有一个复选框对象-从中我想找到选定的复选框值:
<asp:ListView ID="chkboxList" runat="server" DataKeyNames="id">
<LayoutTemplate>
<table id="audiencechklistbox" class="table table-striped bootstrap-datatable datatable dataTable table-hover">
<tr>
<th>Audience Name</th>
</tr>
<asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<asp:CheckBox ID="audienceList" value='<%# Eval("id") %>' Text='<%# Eval("name") %>' runat="server" CssClass="checkbox_nowrap"/>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
我正在尝试使用以下内容来查找复选框的Selected值,但似乎找不到除所选文本之外的其他方法。我在SO中看了很多类似的问题,但似乎找不到符合我情况的问题。
如何查找所选值而不是复选框显示的文本?我的Lambda表达式没有为x.value.提供Intellisense选项
var findCheckedQuery = chkboxList.Controls[0]
.Controls
.Cast<Control>()
.Select(ctrl => ctrl.FindControl("audienceList") as CheckBox)
.Where(chk => chk != null && chk.Checked);
String[] result = findCheckedQuery.Select(x => x.Text).ToArray();
感谢您的帮助。提前谢谢。
服务器端CheckBox控件不公开value
这样的属性,因此您指定的属性将被视为自定义属性。要访问它,请使用:
x.Attributes["value"]
或者(不确定哪一个会起作用)
x.InputAttributes["value"]
然而,由于这是一个仅用于渲染的自定义属性,我并不完全清楚,它甚至可以在帖子背面进行访问。正如您所看到的,CheckBox控件不支持值。不过还是试一试吧。
如果它不起作用,请考虑HtmlInputCheckBox,它是一个稍微有限的控件,但确实提供了必要的Value
属性。在标记中,这应该像一样简单
<input ID="audienceList" Value='<%# Eval("id") %>' Text='<%# Eval("name") %>' runat="server" CssClass="checkbox_nowrap"/>
当然,在后面的代码中,您需要更改将控件转换为的类。