Barry Burton
Top achievements
Rank 1
Barry Burton
asked on 09 Jan 2012, 02:26 AM
I'm having an issue getting my detail table to load properly using NeedDataSource and DetailTableDataBind events. The main grid loads as expected after the NeedDataSource event, however after clicking to expand the row, the detail table does NOT load after the DetailTableDataBind event. Stepping through the code shows the DetailTableDataBind does fire and the DataSource is assigned. If I use a SqlDataSource instead of during the DetailTableDataBind event, the table loads properly. The "GetDetailView" (see below) uses the exact same stored procedure as the SqlDataSource, returning a DataTable. Stepping through the code, the DataTable is populated with the same data as that returned using SqlDataSource.
The events fire properly and the DataSource is assigned a valid DataTable value at the correct moment, therefore I don't understand why the detail table does not load. Any help in resolving the this issue will be greatly appreciated!
protected void MyGrid_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
try
{
GridDataItem dataItem = e.DetailTableView.ParentItem as GridDataItem;
int id = (int) dataItem.GetDataKeyValue("Id");
e.DetailTableView.DataSource = MyClass.GetDetailView(id);
}
catch(Exception ex)
{
// log error
}
}
protected void MyGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
try
{
if(e.IsFromDetailTable == false)
{
MyGrid.DataSource = MyClass.GetView();
}
}
catch(Exception ex)
{
// log error
}
}
The events fire properly and the DataSource is assigned a valid DataTable value at the correct moment, therefore I don't understand why the detail table does not load. Any help in resolving the this issue will be greatly appreciated!
protected void MyGrid_DetailTableDataBind(object sender, GridDetailTableDataBindEventArgs e)
{
try
{
GridDataItem dataItem = e.DetailTableView.ParentItem as GridDataItem;
int id = (int) dataItem.GetDataKeyValue("Id");
e.DetailTableView.DataSource = MyClass.GetDetailView(id);
}
catch(Exception ex)
{
// log error
}
}
protected void MyGrid_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
try
{
if(e.IsFromDetailTable == false)
{
MyGrid.DataSource = MyClass.GetView();
}
}
catch(Exception ex)
{
// log error
}
}
10 Answers, 1 is accepted
0
Shinu
Top achievements
Rank 2
answered on 09 Jan 2012, 05:08 AM
Hello Barry,
Here is the sample code.
C#:
-Shinu.
Here is the sample code.
C#:
protected
void
RadGrid2_DetailTableDataBind(
object
sender, GridDetailTableDataBindEventArgs e)
{
if
(e.DetailTableView.Name ==
"DetailTable1"
)
{
GridTableView detailtabl1 = (GridTableView)e.DetailTableView;
GridDataItem parentItem = (GridDataItem)detailtabl1.ParentItem;
string
customerId = parentItem.GetDataKeyValue(
"CustomerID"
).ToString();
}
}
-Shinu.
0
Barry Burton
Top achievements
Rank 1
answered on 09 Jan 2012, 08:11 PM
I'm sorry, but that does nothing to answer my question. Your code only provides a way get the customer Id,
which I was already doing correctly anyway. THE FOLLOWING IS THE LINE THAT IS CAUSING ME ISSUES:
which I was already doing correctly anyway. THE FOLLOWING IS THE LINE THAT IS CAUSING ME ISSUES:
e.DetailTableView.DataSource = MyClass.GetDetailView(customerId);
It doesn't work...the detail table is not popluated with data. That is what I need help with.
protected
void
RadGrid2_DetailTableDataBind(
object
sender, GridDetailTableDataBindEventArgs e)
{
if
(e.DetailTableView.Name ==
"DetailTable1"
)
{
GridTableView detailtabl1 = (GridTableView)e.DetailTableView;
GridDataItem parentItem = (GridDataItem)detailtabl1.ParentItem;
string
customerId = parentItem.GetDataKeyValue(
"CustomerID"
).ToString();
e.DetailTableView.DataSource = MyClass.GetDetailView(customerId);
}
}
0
Barry Burton
Top achievements
Rank 1
answered on 09 Jan 2012, 10:58 PM
Ok, here is the problem, if ParentTableRelation is declared, the DataSource does not load the detail table with data. Remove the declaration and it does. Should I put in a bug report on this?
<ParentTableRelation>
<telerik:GridRelationFields DetailKeyField="ChildId" MasterKeyField="ParentId" />
</ParentTableRelation>
0
Shinu
Top achievements
Rank 2
answered on 10 Jan 2012, 05:36 AM
Hello Barry,
Check the following demo which explains programmatically binding the RadGrid.
Grid / Programmatic Binding
-Shinu.
Check the following demo which explains programmatically binding the RadGrid.
Grid / Programmatic Binding
-Shinu.
0
Barry Burton
Top achievements
Rank 1
answered on 10 Jan 2012, 05:11 PM
That doesn't say one word about ParentTableRelation. It is required under certain circumstances, but I see nowhere in any of your documentation where it states NOT to declare it when subscribing to NeedDataSource or DetailTableDataBind events.
0
Hi Barry,
Both articles for binding a hierarchical grid list the exact set of steps needed to take in order to create/bind a RadGrid hierarchy. The one about using the DetailTableDataBind event does not mention using declarative relations (ParentTableRelation), since as their name suggests, they are used in cases of declarative binding only.
http://www.telerik.com/help/aspnet-ajax/grid-hierarchical-data-binding-using-declarative-relations.html
http://www.telerik.com/help/aspnet-ajax/grid-hierarchical-data-binding-using-detailtabledatabind.html
However, if this did not get clear to you from the provided information in the articles, this means it could happen to others too, so we will add a note for clarity. Thank you for your feedback on this.
Kind regards,
Tsvetina
the Telerik team
Both articles for binding a hierarchical grid list the exact set of steps needed to take in order to create/bind a RadGrid hierarchy. The one about using the DetailTableDataBind event does not mention using declarative relations (ParentTableRelation), since as their name suggests, they are used in cases of declarative binding only.
http://www.telerik.com/help/aspnet-ajax/grid-hierarchical-data-binding-using-declarative-relations.html
http://www.telerik.com/help/aspnet-ajax/grid-hierarchical-data-binding-using-detailtabledatabind.html
However, if this did not get clear to you from the provided information in the articles, this means it could happen to others too, so we will add a note for clarity. Thank you for your feedback on this.
Kind regards,
Tsvetina
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now
0
jen
Top achievements
Rank 1
answered on 20 Feb 2015, 09:03 PM
Did you ever get this issue sorted out? I am facing the exact same problem, following the same demos, and after i set the datasource with results nothing displays. I am at my wit's end here!
0
Barry Burton
Top achievements
Rank 1
answered on 21 Feb 2015, 04:27 PM
Hi Jen,
Wow, after reading this post, I see that I was incredibly hard on Telerik support, even rude...SORRY GUYS, you ARE the best in the business, I MEAN that!!!
Jen, its been three years since my original post and yes, I did get everything working. Why MY mistake was, I don't remember. If you want to post your code, I will see what I can do to help.
Wow, after reading this post, I see that I was incredibly hard on Telerik support, even rude...SORRY GUYS, you ARE the best in the business, I MEAN that!!!
Jen, its been three years since my original post and yes, I did get everything working. Why MY mistake was, I don't remember. If you want to post your code, I will see what I can do to help.
0
Jaume
Top achievements
Rank 1
answered on 30 Sep 2016, 10:23 AM
Same problem, now solved.This worked for me: "Ok, here is the problem, if ParentTableRelation is declared, the
DataSource does not load the detail table with data. Remove the
declaration and it does."
DataSource does not load the detail table with data. Remove the
declaration and it does."
0
Hello Jaume,
Yes, you are correct. This is also mentioned in our docs:
http://docs.telerik.com/devtools/aspnet-ajax/controls/grid/hierarchical-grid-types-and-load-modes/hierarchical-data-binding-using-detailtabledatabind-event#using-detailtabledatabind
"When binding RadGrid in DetailTableDataBind, you must not use declarative relations (ParentTableRelations) in markup."
Thank you for sharing your experience with our community.
Regards,
Eyup
Telerik by Progress
Yes, you are correct. This is also mentioned in our docs:
http://docs.telerik.com/devtools/aspnet-ajax/controls/grid/hierarchical-grid-types-and-load-modes/hierarchical-data-binding-using-detailtabledatabind-event#using-detailtabledatabind
"When binding RadGrid in DetailTableDataBind, you must not use declarative relations (ParentTableRelations) in markup."
Thank you for sharing your experience with our community.
Regards,
Eyup
Telerik by Progress
Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.