2016-06-09 73 views
0

的回传结合我有同样的问题:GridView控件不是数据上的DetailsView

GridView contents don’t update when underlying data changes

,但提供的答案不工作对我来说,我追求的想法,请因为到目前为止,我已经浪费了3天试图让GridView刷新DetailsView的回发。

情况是这样的: -

我有一个GridView,当选择了行一个DetailsView显示详细信息。 in。

单击编辑时,DetailsView进入“编辑”模式。

我编辑它,然后单击更新按钮。

更新触发一个事件,它可以正确地更新我的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'。除非点击“取消”按钮,否则似乎没有任何内容可以更新其内容。谢谢。

+0

当你点击取消时,会有一个回传拖尾。我会尝试删除:if(!IsPostBack) { ...我会离开 SqlDataSource1.DataBind(); GridView1.DataBind();让我知道如果这是一个解决方案 – Alexandre

+0

你如何填充数据到DetailsView并更新它?请显示代码 – naveen

+0

感谢您的意见,将其添加到Page_Load的根目录中,只是停止了gridview的选择。我已经在 – FlashTrev

回答

0

我找到了答案,从以前的一些工作,我做了,我已经找到工作是清除GridView的数据源,重置其索引和数据绑定它。然后更新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(); 
} 

工作的享受。

相关问题