使用C#从DetailView删除数据后刷新GridView

use*_*332 2 c# asp.net

当用户从GridView中选择任何记录时,我的DetailView将根据GridView的选择进行更新.所以我想要做的是,当我从DetailView中删除任何东西然后我想刷新GridView所以基本上我不想在GridView中显示已删除的记录.我试图通过在连接和SQL语句之后执行数据绑定来解决此问题,但它不会刷新它.需要注意的一点是我使用的是Accordion窗格,但我的gridview和detailview都在同一个窗格中.我不确定这是否会破坏任何东西.这是我的代码:

protected void Refresh_ItemCommand(object sender, DetailsViewCommandEventArgs e)
    {
        if (e.CommandName.Equals("Delete", StringComparison.CurrentCultureIgnoreCase))
        {

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
            SqlDataAdapter da = new SqlDataAdapter("select ID, Name, Address from dbo.MyTable", con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            Gridview1.DataSource = dt;
            Gridview1.DataBind();
        }

    }
Run Code Online (Sandbox Code Playgroud)

小智 7

您可以使用名为"ItemDeleted"的数据视图的事件,如下所示:

  DetailViewName_ItemDeleted(object sender, 
    DetailsViewDeletedEventArgs e)
  {
    // Refresh the GridView control after a new record is updated 
    // in the DetailsView control.
    GridViewName.DataBind();
  }
Run Code Online (Sandbox Code Playgroud)

以上代码来自官方MSDN网站,用于详细视图控制.

另一种方法(我喜欢)是在处理数据网格Page_load的过程,所以当你按下详细视图中的删除按钮,页面会执行回发.

因此,在该过程中,Page_load您可以调用另一个填充数据网格的过程.代码可能是这样的:

if (isPostback)
{
  FillGrid();    
} 

private void FillGrid()
{

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);
            SqlDataAdapter da = new SqlDataAdapter("select ID, Name, Address from dbo.MyTable", con);
            DataTable dt = new DataTable();
            da.Fill(dt);
            Gridview1.DataSource = dt;
            Gridview1.DataBind();
}
Run Code Online (Sandbox Code Playgroud)