未正确读取ASP.net复选框状态
本文关键字:net 复选框 状态 ASP 读取 | 更新日期: 2023-09-27 18:19:21
我有一个显示一些数据的gridview,添加了一个复选框列,这样我就可以删除选中的项目。我的gridview是这样布局的:
<div class = "my_gv">
<asp:UpdatePanel ID = "update_panel" UpdateMode = "Conditional" runat = "server">
<ContentTemplate>
<asp:GridView ID="my_gv" runat="server" AutoGenerateColumns = "False"
GridLines="None" Width="100%" AllowSorting="True"
CssClass="table table-bordered x-condensed cameraDetails" OnRowDataBound = "my_gv_RowDataBound">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="SelectAll_ChckBx" runat="server" onclick="selectAllCheckBoxes(this);" meta:resourceKey="SelectAll_ChckBxResource1" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="row_select_checkbox" runat="server" meta:resourceKey="row_select_checkbox_resource" />
</ItemTemplate>
<HeaderStyle CssClass="CAMheader" />
<ItemStyle CssClass="itemEntry chkBx" Width="25px" />
</asp:TemplateField>
// snip
我处理删除的逻辑做了以下操作:
foreach (GridViewRow row in my_gv.Rows)
{
if (row.RowType != DataControlRowType.DataRow)
{
continue;
}
var chkBox = row.FindControl("row_select_checkbox");
if (chkBox.Checked)
{
// snip
}
这对我来说似乎是有意义的,但是。checked方法总是返回false,不管复选框的实际状态如何。我可以从gridview中访问其他(文本)列。
那么,我做错了什么?如何才能准确地获得复选框状态?感谢您的帮助
我建议制作一个BindGrid方法,它的工作是获取数据列表绑定到网格,然后实际调用DataBind,该方法可以选择接受一个列表,这样所有的方法只是绑定到GridView。然后可以在page_load中执行以下操作:
if(!Page.IsPostBack)
{
BindGrid();
}
如果您需要更新网格(即对网格进行分页或排序),这使您可以灵活地再次调用绑定逻辑。