2014-03-04 170 views
2

我正在使用GridView Row命令从Gridview删除行的事件,我添加了Gridview的RowDeleting事件, 但删除后,GridView变得隐藏起来。 下面是我的代码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(); 
} 
+0

你的意思是数据全没了? –

+0

哪里是数据源? –

+0

@PandaZhang是的,你可以这样说,但是当我刷新页面时,GridView会再次出现 –

回答

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(); 
} 
1

GridView控件不显示任何记录,因为你不dg_RowDeleting调用的DataBind前一个数据源分配给它。

在重新调用DataBind之前,您需要重新指定DataSource,因为它未在回发站上重新设置。

因此,对于你dg_RowCommand方法的删除部分的典型做法是:

  1. 确定要被删除的行。从数据库中删除该行。
  2. 重新加载数据库中的数据。
  3. 将数据分配给DataSource属性。
  4. 通过调用DataBind()来绑定GridView。

对于步骤2-4,您可以拨打LoadData方法dg_RowCommand。如果您不是自己实现删除,而是想在删除某行时执行某些操作,则只需实施dg_RowDeleting