【问题标题】:CheckBox "Checked" value in GridView is always falseGridView 中的 CheckBox“已检查”值始终为 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
  • 谢谢。我已经尝试过这个,但也没有用。
  • 你能发布我的意思是包括标记的完整代码吗?一定是发生了其他事情,因为您的代码看起来不错。
  • 感谢您的关注;问题已经解决了。

标签: c# asp.net gridview checkbox ispostback


【解决方案1】:

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

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
       //Bind Your Grid Here
    }
}

【讨论】:

  • 谢谢。这种方式正是问题所在。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-16
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2020-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多