返回Gridview复选框boolean
本文关键字:boolean 复选框 Gridview 返回 | 更新日期: 2023-09-27 18:02:12
我绞尽脑汁试图访问gridview的ID列,其中用户选择了一个复选框:
<asp:GridView ID="gvUserFiles" runat="server">
<Columns>
<asp:TemplateField HeaderText="Select" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
gridview列是chkSelect(复选框),Id, fileName, CreateDate
当用户选中复选框并按下按钮时,我想接收"id"列值。
下面是我的按钮代码:foreach (GridViewRow row in gvUserFiles.Rows)
{
var test1 = row.Cells[0].FindControl("chkSelect");
CheckBox cb = (CheckBox)(row.Cells[0].FindControl("chkSelect"));
//chk = (CheckBox)(rowItem.Cells[0].FindControl("chk1"));
if (cb != null && cb.Checked)
{
bool test = true;
}
}
cb。Checked总是返回false
总是未选中复选框可能是数据绑定的问题。请确保在调用按钮单击事件之前没有绑定GridView
。有时人们会在Page_load
事件上绑定数据绑定,然后在每个PostBack
事件上保持数据绑定。由于它是在按钮点击之前调用的,所以它可以产生直接影响。当GridView
被绑定时,您将丢失来自该页的所有状态。
如果你在Page_load
上绑定GridView
,包装它来验证!IsPostBack
:
if (!IsPostBack)
{
gvUserFiles.DataSource = data;
gvUserFiles.DataBind();
}
如果这不是你的情况,你可以尝试根据Request.Form
的值验证被检查的属性:
protected void button_OnClick(object sender, EventArgs e)
{
foreach (GridViewRow row in gvUserFiles.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("chkSelect");
if (cb != null)
{
bool ckbChecked = Request.Form[cb.UniqueID] == "on";
if (ckbChecked)
{
//do stuff
}
}
}
}
CheckBox
的Checked
值被浏览器发送为"on"
值。如果没有在浏览器中选中它,那么请求上就没有任何内容。
您可以使用这样的datakey来实现
Add Datakey to your gridview
<asp:GridView ID="gvUserFiles" runat="server" DataKeyNames="Id">
并像这样在服务器端获取
string value = Convert.ToString(this.gvUserFiles.DataKeys[rowIndex]["Id"]);