GridView 中的 CheckBox“已检查”值始终为 false

Posted

技术标签:

【中文标题】GridView 中的 CheckBox“已检查”值始终为 false【英文标题】:CheckBox "Checked" value in GridView is always false 【发布时间】:2015-02-12 16:09:34 【问题描述】:

我在gridview 中使用checkbox 列,该列是从SQL 数据库填充的。 gridview 下方的按钮应检索已检查 checkboxe's 的行的数据。当我遍历所有行checkboxe's 时,即使我在单击按钮之前已经检查了所有行,它们都没有checked==true。这是ASP.NET 代码:

<asp:TemplateField>
        <ItemTemplate>
            <asp:CheckBox ID="chkRow" runat="server" />
        </ItemTemplate>
</asp:TemplateField>

这里是循环遍历所有行的复选框的按钮操作:

protected void GetSelectedRecords(object sender, EventArgs e)

    foreach (GridViewRow row in GridView1.Rows)
    
        if (row.RowType == DataControlRowType.DataRow)
        
            CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox);               
            if (chkRow != null && chkRow.Checked) //chkRow.Checked is always "false" 
            
                string name = row.Cells[2].Text;
            
          
                   

提前非常感谢。非常感谢任何帮助。

【问题讨论】:

试试这个:- row.FindControl("chkRow") as CheckBox 谢谢。我已经尝试过这个,但也没有用。 你能发布我的意思是包括标记的完整代码吗?一定是发生了其他事情,因为您的代码看起来不错。 感谢您的关注;问题已经解决了。 【参考方案1】:

如果您在Page_Load 中绑定您的网格,请确保您没有在if(!IsPostBack) 之外绑定您的网格。否则,您将丢失每个postback 上的checkboxe's,从而失去checkboxe's 的状态。

protected void Page_Load(object sender, EventArgs e)

    if(!IsPostBack)
    
       //Bind Your Grid Here
    

【讨论】:

谢谢。这种方式正是问题所在。非常感谢。

以上是关于GridView 中的 CheckBox“已检查”值始终为 false的主要内容,如果未能解决你的问题,请参考以下文章

.net中,如何获取到gridview控件中的checkbox控件的值?

GridView中的CheckBox如何绑定数据?

在android app中的gridview里面这么添加checkbox?

gridview获取checkbox的选中行

ASP.NET GridView 模板字段中的 CheckBox 在提交时不保留其值

高分,在线等。C#的GridView中的CheckBox始终为灰色,不能勾选