无法更新ASPxGridControl中的数据

时间:2014-07-18 09:00:42

标签: asp.net devexpress

我发现单击第一个网格控件时无法更新第二个网格中的数据。

我的程序中有两个网格,并且有重载函数GetDataTable2()根据grid1中的焦点行获取DataTable。

但是,我知道为什么grid2无法更新。

请帮忙!

    protected void Page_Load(object sender, EventArgs e)
    {
        gv1.DataSource = GetDataTable1();
        gv1.KeyFieldName = "ID";
        gv1.DataBind();

        gv2.DataSource = GetDataTable2();
        gv2.DataBind();
    }



    protected void gv1_FocusedRowChanged(object sender, EventArgs e)
    {
        gv2.DataSource = GetDataTable2((int)gv1.GetRowValues(gv1.FocusedRowIndex, "ID"));
        gv2.DataBind();
    }

和asp.net:

<body> 
  <form id="form1" runat="server"> 
  <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager> 
  <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
      <div>
        <dx:ASPxGridView ID="gv1" runat="server"  SettingsBehavior-AllowFocusedRow="true" SettingsBehavior-ProcessFocusedRowChangedOnServer="true" OnFocusedRowChanged="gv1_FocusedRowChanged"  >
      </div>  
      <div>
        <dx:ASPxGridView ID="gv2" runat="server"   >
      </div> 
    </ContentTemplate> 
  </asp:UpdatePanel>
  </form> 
</body> 

2 个答案:

答案 0 :(得分:1)

我认为如果将ASPxGridView的EnableCallbacks属性设置为false,则代码将开始正常运行。当它位于MS UpdatePanel中时,这是使用ASPxGridView的推荐方法。

答案 1 :(得分:0)

您不需要UpdatePanel。 在第一个网格中,使用&#34; RowClick&#34;客户端事件并在第二个网格中执行回调。

ClientSide事件

function gv1_RowClick(s, e) {
    gv2.PerformCallback("UPDATE_SECOND_GRID|" + gv1.GetRowKey(e.visibleIndex));
}

ServerSide事件

protected void gv2_CustomCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e) 
{
    string[] args = e.Parameters.Split('|');
    if (args == null || args.Length == 0)
        return;

    if (args[0].Equals("UPDATE_SECOND_GRID")) {
        //your code with args[1] (key of the first grid)
        gv2.DataSource = GetDataTable2();
        gv2.DataBind();
    }     
}