行删除事件后,GridView隐藏了

时间:2014-03-04 06:53:53

标签: c# asp.net

我正在使用GridView Row命令Event从Gridview中删除行,我添加了gridview的RowDeleting事件, 但是在删除GridView之后就越来越隐藏了。 以下是我的代码

 protected void Page_Load(object sender, EventArgs e)
        {
       if (!Page.IsPostBack){
LoadData()//Here I am databinding the Grid
}
}

private void LoadData()
{
var data=MyClass.GetRecords();//it returns  DataTable
dg.DataSource=data;
dg.DataBind();
}
protected void dg_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName =="del")
    {
        //Delete Records
        dg.DataBind();
    }

}

public void dg_RowDeleting(Object sender, GridViewDeleteEventArgs e)
{
    dg.DataBind();
} 

2 个答案:

答案 0 :(得分:1)

GridView不会显示任何记录,因为在dg_RowDeleting中调用DataBind之前,您没有为其分配DataSource。

在重新调用DataSource之前,您需要重新分配DataBind,因为它未在PostBack上再次设置。

因此,dg_RowCommand方法的删除部分的典型方法是:

  1. 标识要删除的行。从数据库中删除该行。
  2. 从数据库重新加载数据。
  3. 将数据分配给DataSource属性。
  4. 通过调用DataBind()绑定GridView。
  5. 对于步骤2-4,您可以从LoadData调用dg_RowCommand方法。如果您没有自己实现删除,但是想要在删除行时执行某些操作,则只需要实现dg_RowDeleting

答案 1 :(得分:1)

我的猜测是你在删除行后缺少DataSource。

试试这个

protected void dg_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName =="del")
    {
        //Delete Records
       LoadData();
    }

}

public void dg_RowDeleting(Object sender, GridViewDeleteEventArgs e)
{
    LoadData();
}