GridView没有数据绑定在DetailsView的回发上

时间:2016-06-09 20:01:17

标签: c# asp.net gridview detailsview ispostback

我有同样的问题:

GridView contents don’t update when underlying data changes

但所提供的答案对我不起作用,我想完了想法,因为到目前为止我浪费了3天试图让GridView在DetailsView的回发上刷新。

情况是这样的: -

我有一个GridView,当选择一行时,DetailsView会显示详细信息。英寸

点击编辑后,DetailsView进入“编辑”模式。

我编辑它并单击“更新”按钮。

Update会触发一个事件并正确更新我的SQL数据库表。

问题是尽管有100个帖子说使用GridView1.Databind();直到我点击取消按钮才会刷新。

我知道它回发了,因为我已经调试了它并在Page_load(...)回发中看到了它。

我添加了

  

SqlDataSource1.DataBind();

  

GridView1.DataBind()

到以下地方,似乎没有人刷新我的GridView。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ...
    }
    else
    {
    SqlDataSource1.DataBind();
    GridView1.DataBind();
    }
}

protected void DetailsView1_ItemUpdating(object sender,   DetailsViewUpdateEventArgs e)
{
   GridView1.DataBind();
}

protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
{
    //GridView.SelectedIndex = -1;
   SqlDataSource1.EnableCaching = false;
    // UpdatePanel14.Update();
    SqlDataSource1.DataBind();
    GridView1.DataBind();
    SqlDataSource1.EnableCaching = true;
    // EndEditingGridView();
}

因为你可以看到我在Page_Load()下尝试了一个回发,关于DetailsView的更新和​​更新。我也试过在GridView上设置'ViewState = Disabled'。除非我点击“取消”按钮,否则似乎没有更新内容。感谢。

1 个答案:

答案 0 :(得分:0)

我从之前的一些工作中找到了答案,我发现的工作是删除Gridviews数据源,重置其索引并对其进行数据绑定。然后更新UpdatePanel,然后重新连接gridview并再次对其进行数据绑定。

我的函数,我在DetailsView1_ItemUpdated()事件结束时调用:

private void EndEditingDetailsView1()
{
    GridView.DataSourceID = null;
    GridView.EditIndex = -1;
    GridView.DataBind();

    DetailsUpdatePanel.DataBind();
    DetailsUpdatePanel.Update(); 

    GridView.DataSourceID = "SqlDataSource";
    GridView.EditIndex = -1;
    GridView.DataBind();
}

是一种享受。