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