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

[Solved] Hierachy Radgrid binding

1 Answer 141 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Swetha B
Top achievements
Rank 1
Swetha B asked on 17 Nov 2009, 01:31 PM

Hello,

i am developing a user control which is single hierachy.i used the following design and code.
On click of epand button i got an error message like Child_Entity_Id is not found in "Parent_Entity" contract
 in parent grid "PreRender event".
-------Error -------------------

Message : DataBinding: '...DataContracts.Parent_Entity' does not contain a property with the name 'Child_Entity_Id'.
 Source : System.Web
  Data : System.Collections.ListDictionaryInternal
 TargetSite : System.Object GetPropertyValue(System.Object, System.String)
 Stack Trace :    at System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName)
    at Telerik.Web.UI.GridTableView.PopulateDataKeys(Object dataItem)

i used the following design and code content

<telerik:RadGrid ID="gvwParent" runat="server" AutoGenerateColumns="false" Width="100%"
                ShowStatusBar="true" PageSize="3" AllowPaging="true" GridLines="None" CellPadding="0"
                OnPreRender="gvwParent_PreRender" CellSpacing="0" CssClass="MainClass" AllowSorting="true"
                OnItemDataBound="gvwParent_OnItemDataBound" ShowHeader="false" ShowFooter="false" DataMember="Parent"
                AllowFilteringByColumn="true" OnNeedDataSource="gvwParent_NeedDataSource"  OnDetailTableDataBind="gvwParent_DetailTableDataBind">
                <AlternatingItemStyle CssClass="Row2" />
                <ItemStyle CssClass="Row1" />
                <PagerStyle CssClass="PagerClass" Mode="NextPrevNumericAndAdvanced" AlwaysVisible="true"
                    ShowPagerText="false" />
                <MasterTableView DataKeyNames="Parent_Entity_Id" AllowMultiColumnSorting="true">
                    <DetailTables>
                        <telerik:GridTableView AutoGenerateColumns="false" AllowPaging="true" AllowFilteringByColumn="true"
                            DataMember="ChildEntities" GridLines="None" CellPadding="0" CellSpacing="0"
                            ShowFooter="false" CssClass="MainClass" DataKeyNames="Child_Entity_Id"
                            DataSourceID='<%# Eval("ChildEntities) %>' AllowSorting="true">
                            <PagerStyle CssClass="PagerClass" Mode="NumericPages" />
                            <HeaderStyle CssClass="HeaderClass" />
                            <AlternatingItemStyle CssClass="Row2" />
                            <FooterStyle CssClass="FooterClass" />
                            <ItemStyle CssClass="Row1" />
                            <ParentTableRelation>
                                <telerik:GridRelationFields DetailKeyField="Parent_Entity_Id" MasterKeyField="Parent_Entity_Id" />
                            </ParentTableRelation>
                            <Columns>                               
                                <telerik:GridTemplateColumn HeaderText="Title" ItemStyle-CssClass="gvwNameWidth"
                                    SortExpression="Child_Entity_Title">
                                    <ItemTemplate>
                                        <asp:Label ID="lblName" Text='<%#Eval("Child_Entity_Title") %>'
                                            ToolTip='<%# Eval("Child_Entity_Desc") %>' runat="server" />
                                    </ItemTemplate>
                                </telerik:GridTemplateColumn>                                                            
                            </Columns>
                            <NoRecordsTemplate>
                                No Records...!
                            </NoRecordsTemplate>
                        </telerik:GridTableView>
                    </DetailTables>
                    <Columns>
                        <telerik:GridTemplateColumn>
                            <ItemTemplate>
                                <table class="tblmain">
                                    <tr>
                                        <td width="4px">
                                            <asp:Image ID="imgStatus" runat="server" Style="padding-left: 3px;" ImageUrl="~/Images/spacer.gif"
                                                Width="6px" Height="6px" />
                                        </td>
                                        <td class="Parent_HeaderCss">
                                            <asp:Label ID="lblParentName" runat="server" Text='<%# Eval("Parent_Entity_Title") %>'> </asp:Label>
                                          
                                        </td>                                       
                                    </tr>
                                </table>
                            </ItemTemplate>
                        </telerik:GridTemplateColumn>
                    </Columns>
                </MasterTableView>
            </telerik:RadGrid>

 --------Code

 protected void gvwParent_OnItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
    {
        try
        {
            if (e.Item.OwnerTableView.DataMember.Equals("Child_Entities"))
            {
          
            }
            else
           {
              
            if (e.Item.OwnerTableView.DataMember.Equals("Parent"))
            {
                if (e.Item.ItemType == Telerik.Web.UI.GridItemType.Item || e.Item.ItemType == Telerik.Web.UI.GridItemType.AlternatingItem)
                {
                  
             }
              
            }
  }
        }
        catch (Exception ex)
        {
            ExceptionManager.HandleException("", ex);
        }
    }

    protected void gvwParent_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        if (!e.IsFromDetailTable)
        {           
            gvwParent.DataSource = Parent_Entities;
        }
    }

    protected void gvwParentt_PreRender(object sender, EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                gvwParent.MasterTableView.Items[0].Expanded = true;
            }
        }
        catch (Exception ex)
        {
            ExceptionManager.HandleException("", ex);
        }
    }

    protected void gvwParent_DetailTableDataBind(object sender, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
    {
        try
        {
            if (e.DetailTableView.Name.Equals("Chiled_Entities"))
            {
                Parent_Entity parentEntity = Parent_Entities.Find(delegate(Parent_Entity PE) { return PE.Parent_Entity_Id == Convert.ToInt32(e.DetailTableView.ParentItem.GetDataKeyValue("Parent_Entity_Id")); });
                if (parentEntity  != null)
                    e.DetailTableView.DataSource = parentEntity .Child_Entities;
            }
        }
        catch (Exception ex)
        {
            ExceptionManager.HandleException("", ex);
        }
    }



Thanks,
Swetha

1 Answer, 1 is accepted

Sort by
0
Suresh K
Top achievements
Rank 1
answered on 18 Nov 2009, 08:06 AM
hi Swetha .

In aspx page u Mentioned   DataMember="ChildEntities".

in c# code u mentioned : if (e.Item.OwnerTableView.DataMember.Equals("Child_Entities")) on gvwParent_OnItemDataBound

here u can change Data Member="Child_Entities" in aspx page.
and
if (e.DetailTableView.Name.Equals("Chiled_Entities")) on  gvwParent_DetailTableDataBind

here u did n't mentioned data table name as Child_Entities.Please Mention    Name="ChildEntities" in aspx page..

try this......
Tags
Grid
Asked by
Swetha B
Top achievements
Rank 1
Answers by
Suresh K
Top achievements
Rank 1
Share this question
or