在gridView编辑期间恢复checkBox中的当前值 - WebForm C#

时间:2017-07-04 10:20:15

标签: c# asp.net gridview checkbox webforms

我在可编辑的gridView中有一个简单的复选框:

public void GridViewRisquesAggravants_UpdateItem(IndexViewModel item)
{
 try
   {
    if (ModelState.IsValid)
      {
       CheckBox chbEdit = (CheckBox)GridView.Rows[this.GridView.EditIndex].FindControl("CheckBoxEditable") 
          if (item.IsEditable)
              chbEdit.Checked = true;

        new TypeService().Update(new Type
        {   
          IsEditable = item.IsEditable, 
        });
        this.GridView.DataBind();
      }
    }
    catch
    {
      throw;
    }
}

当我点击行中的编辑按钮时,如果value为true,我希望检查checkBox。 (IsEditable是一个布尔值) 文本字段很简单,因为我在EditItemTemplate中的Text属性上有一个BindItem。但是对于checkBox或dropdownlist

,情况并不相同

GridView的

enter image description here

我使用UpdateItem方法更新数据库中的数据。我尝试了一个小条件来检查我的复选框,但它确实有效。

SelectMethod="GridView_GetData"
UpdateMethod="GridView_UpdateItem"
DeleteMethod="GridView_DeleteItem"

这是有道理的,因为我没有正确的功能来声明这一点。但我的网络表单中只有3种方法。

{{1}}

我在哪里可以这样做? (而且我对dropdownList上的数据也有同样的问题。我不知道在编辑过程中我在哪里恢复当前值)

提前致谢 (对不起,我是关于webforms的初学者,我的英语并不完美)

小艾

4 个答案:

答案 0 :(得分:0)

CheckBox chbx = GridView1.HeaderRow.FindControl("CheckBoxEditable") as CheckBox;
  if (chbx != null && chbx.Checked)            
{
  //code here
}
else 
{
  //else condtion
}

希望这会有所帮助

答案 1 :(得分:0)

使用以下代码代替编辑模板中的复选框声明

 <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Convert.ToBoolean("true") %>' />

答案 2 :(得分:0)

  

我在哪里可以做到这一点?

RowDataBound事件中尝试:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        CheckBox chbEdit = (CheckBox)e.Row.FindControl("CheckBoxEditable");

        string value = ((Label)e.Row.FindControl("lblID")).Text;
        if (value=="True")
            chbEdit.Checked = true;
        else
            chbEdit.Checked = false;
    }
}

注意:不要忘记在GrindView <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound" >

中添加OnRowDataBound

答案 3 :(得分:0)

我在CheckBox Control上添加了属性Checked=<%# BindItem.IsEditable %>,它运行正常。