Hi, I got a problem on a WHDG with paging and binding on code behind. Childs are not filled after a post back. here the code : namespace WebApplication1 { public partial class Default : System.Web.UI.Page { public DataSet countryCustomersDataSet { get { if (Session["MyDataSet"] != null) return (DataSet)Session["MyDataSet"]; else return null; } set { Session["MyDataSet"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { LoadDataSet(true); this.MyGrid.DataMember = "Root"; this.MyGrid.DataKeyFields = "Id"; } this.MyGrid.DataSource = countryCustomersDataSet; this.MyGrid.DataBind(); } private void LoadDataSet(bool reload) { if (!reload) return; DataSet ds = new DataSet(); DataTable dt = new DataTable("Root"); dt.Columns.Add("Id"); dt.Columns.Add("BirthDate", typeof(DateTime)); dt.Columns.Add("Name"); dt.Rows.Add(new object[] { 101, "11/09/1980", "Chandradeep" }); dt.Rows.Add(new object[] { 102, "11/10/1970", "MikeS" }); dt.Rows.Add(new object[] { 103, "11/12/1875", "Luke" }); dt.Rows.Add(new object[] { 104, "11/2/1988", "Sam" }); // Child DataRecords. DataTable dt1 = new DataTable("Children1"); dt1.Columns.Add("IdParent"); dt1.Columns.Add("BirthDate"); dt1.Columns.Add("Name"); dt1.Rows.Add(new object[] { 101, "11/09/1980", "1Chandradeep" }); dt1.Rows.Add(new object[] { 101, "11/09/1981", "1Chandradeep 2" }); dt1.Rows.Add(new object[] { 101, "10/09/1979", "1Chandradeep 3" }); dt1.Rows.Add(new object[] { 101, "11/09/1982", "1Chandradeep 4" }); dt1.Rows.Add(new object[] { 102, "11/09/1980", "2MikeS" }); dt1.Rows.Add(new object[] { 102, "11/09/1999", "2Step In" }); dt1.Rows.Add(new object[] { 102, "11/12/1951", "2Step Out" }); dt1.Rows.Add(new object[] { 103, "11/09/1980", "3Sandeep Patil" }); dt1.Rows.Add(new object[] { 103, "11/09/1980", "3Step Out" }); dt1.Rows.Add(new object[] { 104, "11/09/1980", "4Sandeep Patil" }); dt1.Rows.Add(new object[] { 104, "11/09/1980", "4Step Out" }); dt1.Rows.Add(new object[] { 104, "11/09/1980", "4Sandeep Patil" }); dt1.Rows.Add(new object[] { 104, "11/09/1980", "4Step Out" }); //Tables added to the Collections of DataSet ds.Tables.Add(dt); ds.Tables.Add(dt1); ds.Relations.Add(new DataRelation("relation1", dt.Columns[0], dt1.Columns[0])); countryCustomersDataSet = ds; } protected void btnTest_Click(object sender, EventArgs e) { lblResultat.Text = ((Button)sender).CommandArgument; } } }
ASPX : <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" EnableEventValidation="false" Inherits="WebApplication1.Default" %> <%@ Register assembly="Infragistics4.Web.v10.2, Version=10.2.20102.2129, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" namespace="Infragistics.Web.UI.GridControls" tagprefix="ig" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:Label ID="lblResultat" runat="server" ></asp:Label> <ig:WebHierarchicalDataGrid ID="MyGrid" runat="server" EnableViewState="true" DataMember="Root" AutoGenerateBands="true" DataKeyFields="Id" AutoGenerateColumns="true" Key="parent" InitialDataBindDepth="-1" InitialExpandDepth="-1" Width="100%" > <Bands> <ig:Band Key="details" DataMember="Children1" DataKeyFields="IdParent" AutoGenerateColumns="false" > <Columns > <ig:BoundDataField DataFieldName="Name" Key="keyName"></ig:BoundDataField> <ig:BoundDataField DataFieldName="BirthDate" Key="keyBirthDate"></ig:BoundDataField> <ig:TemplateDataField Key="btnTest"> <ItemTemplate> <asp:Button OnClick="btnTest_Click" runat="server" ID="btnTest" CommandArgument='<%# Eval("Name") %>' Text='<%# DataBinder.Eval(((Infragistics.Web.UI.TemplateContainer)Container).DataItem, "Name") %>' /> </ItemTemplate> </ig:TemplateDataField> </Columns> </ig:Band> </Bands> <Behaviors> <ig:Paging Enabled="true" PageSize=2></ig:Paging> </Behaviors> </ig:WebHierarchicalDataGrid> </div> </form> </body> </html>
When I click on button, the button postback event will be good but child will disappear and the expand button is not rendered
Why ?
Is there anyone here ?
Hello,
I'm looking into your scenario.
Thanks for the update.
Thanks.The problem was the primary key that I didn't set .
DataColumn[] PrimaryKeyColumns = new DataColumn[1];PrimaryKeyColumns[0] = table.Columns["id"];table.PrimaryKey = PrimaryKeyColumns;
Infragistics' controls are very sensitive ...
Thanks you, I'll try to apply on my real project to see if it's ok
Hello Vincent,
Thank you for your patience while I was working on your issue. I have made a small sample similar to yours, as a datasource I used DataSet however the sample does not need of call to database to be tested. I enabled paging for parent as well for the child bands and the grid work great. Please note that the sample is built with the latest service release for your version. Would you check it out please? You may need to change the build number in your web.config and page directives to get it work with your build.
Sample : http://forums.infragistics.com/members/RMinchev/files/WHDG/WHDGPaging.zip.aspx
Looking forward to hear your feedback.