This is a migrated thread and some comments may be shown as answers.

Details displaying twice

1 Answer 39 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Tami
Top achievements
Rank 1
Tami asked on 26 Aug 2010, 12:13 AM
Hi,
I have a hierarchical grid that I am binding to a dataset.  One table is summary data and the second table is the detail data.  I have definied a relation using a field called ExpenditureType.  I am building all of my columns dynamically.  All works well, but my details table displays twice when I expand.  The code is pretty simple, so I can't figure out what is causing it.  I have attached a screenshot as well.  Do you see what I am doing wrong? 

Thanks!  Tami
private void BindGrid()
       
           RadGrid1.DataSource = _dsBudgetVerification.Tables["BVSummary"];
           RadGrid1.Width = Unit.Percentage(98);
           RadGrid1.AutoGenerateColumns = false;
           RadGrid1.GridLines = GridLines.Both;  //TODO:  This doesn't seem to work
           RadGrid1.CssClass="gridborder";
           RadGrid1.MasterTableView.DataKeyNames = new string[] { "ExpenditureType" };
           RadGrid1.MasterTableView.Name = "tvSummary";
           RadGrid1.MasterTableView.HierarchyLoadMode = GridChildLoadMode.ServerBind;
           //RadGrid1.MasterTableView.HierarchyLoadMode = GridChildLoadMode.Client;
           //RadGrid1.ClientSettings.AllowExpandCollapse = true;
            
           //Add Summary table
           RadGrid1.MasterTableView.Width = Unit.Percentage(100);
           GridBoundColumn boundColumn;
           GridDropDownColumn ddlColumn;
           foreach (DataColumn dataColumn in _dsBudgetVerification.Tables["BVSummary"].Columns)
           {
               //these apply to every column in Summary
               boundColumn = new GridBoundColumn();
               RadGrid1.MasterTableView.Columns.Add(boundColumn);
               boundColumn.HeaderText = dataColumn.Caption;
               boundColumn.HeaderStyle.CssClass = "gridheader";
               //we know the column names of the text fields, so let's set their formatting
               switch (dataColumn.Caption)
               {
                   case "EscalatorID":
                   case "EscalatorName":
                       
                           //TODO:  figure out how to add combobox here
                           boundColumn.DataField = dataColumn.Caption;
                           break;
                       }
                   case "ExpenditureType":
                   case "ExpenditureTypeExists":
                       {
                           boundColumn.DataField = dataColumn.Caption;
                           if (dataColumn.Caption == "ExpenditureTypeExists") boundColumn.Visible = false;
                           break;
                       }
                     
                   default:
                       //anything else will be an amount
                       {
                           boundColumn.DataField = dataColumn.Caption;
                           boundColumn.HeaderStyle.Width = 50;
   
                           //also build our list of months for use in the Total column
                           lstMonths += '"' + dataColumn.ColumnName + '"' + ',';
                           break;
                       }
               }
           }
          
           //now trim the last comma off the list
           lstMonths = lstMonths.Substring(1, lstMonths.Length - 3);
           //now add a calculated Total column at the end of the summary
           CreateCalcColumn(RadGrid1.MasterTableView, lstMonths);
                                    
           //Add Details table
           GridTableView tableViewDetails = new GridTableView(RadGrid1);
           RadGrid1.MasterTableView.DetailTables.Add(tableViewDetails);
           tableViewDetails.Width = Unit.Percentage(100);
           tableViewDetails.DataSource = _dsBudgetVerification.Tables["BVDetails"];
           tableViewDetails.DataMember = "BVDetails";
           tableViewDetails.DataKeyNames = new string[] { "ExpenditureType" };
           tableViewDetails.Name = "tvDetails";
           GridRelationFields relationFields = new GridRelationFields();
           relationFields.MasterKeyField = "ExpenditureType";
           relationFields.DetailKeyField = "ExpenditureType";
           tableViewDetails.ParentTableRelation.Add(relationFields);
           RadGrid1.MasterTableView.DetailTables.Add(tableViewDetails);
           foreach (DataColumn dataColumn in _dsBudgetVerification.Tables["BVDetails"].Columns)
           {
               switch (dataColumn.Caption)
               {
                   case "EscalatorID":
                   case "EscalatorName":
                       
                           //ddlColumn = new GridDropDownColumn();
                           //tableViewDetails.Columns.Add(ddlColumn);
                           //ddlColumn.UniqueName = "Escalator";
                           //ddlColumn.ListTextField = "Escalator";
                           //ddlColumn.ListValueField = "EscalatorID";
                           //ddlColumn.ListDataMember = "Escalator";
                           //ddlColumn.DataSourceID = "dsrcEscalators";
                           //ddlColumn.DataField = dataColumn.Caption;
                           //ddlColumn.HeaderText = dataColumn.Caption;
                           //ddlColumn.HeaderStyle.CssClass = "gridheader";
                           //ddlColumn.EditItemTemplate = new ddlTemplate();
                           break;
             
                       }
                   default:
                       {
                           boundColumn = new GridBoundColumn();
                           tableViewDetails.Columns.Add(boundColumn);
                           boundColumn.DataField = dataColumn.Caption;
                           boundColumn.HeaderText = dataColumn.Caption;
                           boundColumn.HeaderStyle.CssClass = "gridheader";
                           break;
                       }
               }
           }
           //now add a calculated Total column at the end of the details
           CreateCalcColumn(tableViewDetails, lstMonths);
       }
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
       <AjaxSettings>
           <telerik:AjaxSetting AjaxControlID="RadGrid1">
               <UpdatedControls>
                   <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1" />
               </UpdatedControls>
           </telerik:AjaxSetting>
       </AjaxSettings>
   </telerik:RadAjaxManager>
   <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
   </telerik:RadAjaxLoadingPanel>
   <telerik:RadGrid ID="RadGrid1" runat="server" OnItemDataBound="RadGrid1_ItemDataBound" />

1 Answer, 1 is accepted

Sort by
0
Pavlina
Telerik team
answered on 26 Aug 2010, 12:40 PM
Hello Tami,

I would suggest you to read the topic Programmatic creation and also examine the following demos concerning creating hierarchical grid programmatically:
Programmatic creation - On PageInit
Programmatic creation - On PageLoad
Programmatic creation - Creating hierarchy programmatically

Kind regards,
Pavlina
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
Tags
Grid
Asked by
Tami
Top achievements
Rank 1
Answers by
Pavlina
Telerik team
Share this question
or