Tony Wu
Tony Wu

Reputation: 1107

Cannot update the data in ASPxGridControl

I found that I cannot update the data in my second grid when I clicked on the first grid control.

There are two grids in my program and there is overloaded function GetDataTable2() to get DataTable according to the focused row in grid1.

However, I dun know why the grid2 cannot be updated.

Please help!

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

And the 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> 

Upvotes: 0

Views: 237

Answers (2)

Hemerson Carlin
Hemerson Carlin

Reputation: 7424

You don't need the UpdatePanel. In the first grid, use the "RowClick" client side event and perform a callback in the second grid.

ClientSide Event

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

ServerSide Event

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

Upvotes: 0

platon
platon

Reputation: 5340

I think that if you set the ASPxGridView's EnableCallbacks property to false, your code will start working properly. This is the recommended way of using ASPxGridView when it is located within the MS UpdatePanel.

Upvotes: 1

Related Questions