加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net gridview复选框选择

发布时间:2020-12-16 04:09:52 所属栏目:asp.Net 来源:网络整理
导读:需要一些帮助来解决这个问题. 我有一个gridview,在gridview里面我有一个复选框,点击复选框后,我正在做一个回发事件,并尝试仅在数据库上更新这个特定的行. 这是我的gridview复选框代码.看到OnCheckedChanged. asp:TemplateField HeaderText="Sample" ItemTemp
需要一些帮助来解决这个问题.

我有一个gridview,在gridview里面我有一个复选框,点击复选框后,我正在做一个回发事件,并尝试仅在数据库上更新这个特定的行.

这是我的gridview复选框代码.看到OnCheckedChanged.

<asp:TemplateField HeaderText="Sample">
  <ItemTemplate>
     <asp:CheckBox runat="server" 
                   ID="chkSample" 
                   Checked='<%# Bind("Sample") %>' 
                   OnCheckedChanged="UpdateSupplyLed" 
                   AutoPostBack="True">
    </asp:CheckBox> 
  </ItemTemplate>
</asp:TemplateField>

码:

protected void UpdateSupplyLed(object sender,EventArgs e)
{
    foreach (GridViewRow di in SamplingGridView.Rows)    
    {        
        CheckBox chkBx = (CheckBox)di.FindControl("chkSample");
        if (chkBx != null && chkBx.Checked)
        {
            //update database logic here.
        }
    }
}

上面的代码工作正常,但它给我的所有复选框都被检查,而不管我刚检查的那个.我不想要所有这些.

如何才能获得刚刚检查过的唯一一行值.某些行可能已经被检查过,因为这些记录的状态为true,我不想更新这些记录.

我想我的问题是对的!

更新:答案是:

protected void UpdateSupplyLed(object sender,EventArgs e)
{
    CheckBox chkSampleStatus = sender as CheckBox;        
    bool sample = chkSampleStatus.Checked;            
    GridViewRow row = chkSampleStatus.NamingContainer as GridViewRow;        
    TextBox txtId = row.FindControl("Id") as TextBox;            
    int id = Int32.Parse(txtId.Text);
}

解决方法

试试这个:
CheckBox chkBx = sender as CheckBox;

而不是迭代所有行.

我自己没有以这种方式在GridView中使用CheckBox.通常我会使用GridView的OnRowCommand事件,并使用RowIndex或CommandArgument值来更新数据库.

考虑一下OnRowcommand对于CheckBox来说可能很棘手,一个更好的解决方案可能是坚持使用复选框的CheckChanged事件并使用控件NamingContainer导航到GridViewRow服务器端.就像是:

GridViewRow row = chkBx.NamingContainer as GridViewRow;

我假设去了CheckBox => Cell =>如果您使用Google ASP.NET NamingContainer,您将获得更多细节.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读