I have a grid with nested views via tempates. The tamplate retrieves data though an ObjectDataSource that gets it form a Webservice.
Now, when I expand any element in the hierarchy it works perfectly, however, if I try to sort or filter any column from the Mater Table, I get an exception:
Error: Sys.WebForms.PageRequestManagerServerErrorException: The DataSourceID of 'FormView' must be the ID of a control of type IDataSource. A control with ID 'ObjectDataSource' could not be found.
I have tried adding the same ObjectDataSource after the grid definition but it does work (not exception thrown) for sorting/filtering of the Master Table but if I try to expand any of the nested views, it simply does not show any data. However, if right before I try sorting/filtering the master table (right after I load the gid for the first time) I expand any of the nested views, they do get the data. It is only after I sort/filter that they don't.
The following is the code for the radGrid that I currently have, which is the one that forces the exception to be thrown:
<telerik:RadGrid ID="OrbitRadGrid" runat="server" AllowFilteringByColumn="True" AllowSorting="True" VirtualItemCount="50000" GridLines="None" AllowPaging="true" PageSize="20" AllowCustomPaging="true" ShowGroupPanel="false" EnableLinqExpressions="false" OnNeedDataSource="OrbitRadGrid_NeedDataSource" OnSortCommand="OrbitRadGrid_SortCommand" Skin="WebBlue" > <ClientSettings AllowColumnsReorder="True" AllowDragToGroup="False" ReorderColumnsOnClient="True"> <Scrolling AllowScroll="True" EnableVirtualScrollPaging="True" UseStaticHeaders="True" SaveScrollPosition="True" /> <Resizing AllowColumnResize="True" /> </ClientSettings> <MasterTableView DataKeyNames="Item_Name, Source_Name" AutoGenerateColumns="False" AllowNaturalSort="false" > <Columns> <telerik:GridBoundColumn DataField="Item_Name" HeaderText="Item Name" ReadOnly="True" SortExpression="Item_Name" UniqueName="Item_Name" HeaderStyle-Width="220px"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Source_Name" HeaderText="Item Source" ReadOnly="True" SortExpression="Source_Name" UniqueName="Source_Name" HeaderStyle-Width="220px"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="ItemType_Name" HeaderText="Item Type" ReadOnly="True" SortExpression="ItemType_Name" UniqueName="ItemType_Name" HeaderStyle-Width="115px"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Team_Name" HeaderText="Item Team" ReadOnly="True" SortExpression="Team_Name" UniqueName="Team_Name" HeaderStyle-Width="115px"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="IsTestItem" HeaderText="Test" ReadOnly="True" UniqueName="IsTestItem" AllowFiltering="false" HeaderStyle-Width="50px"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="IsItemOnHold" HeaderText="On Hold" ReadOnly="True" UniqueName="IsItemOnHold" AllowFiltering="false" HeaderStyle-Width="62px"> </telerik:GridBoundColumn> </Columns> <NestedViewTemplate> <asp:Label ID="ItemName" Text='<%# Eval("Item_Name") %>' Visible="false" runat="server" /> <asp:Label ID="ItemSource" Text='<%# Eval("Source_Name") %>' Visible="false" runat="server" /> <asp:FormView ID="FormView" runat="server" DataSourceID="ObjectDataSource"> <ItemTemplate> <asp:Panel ID="NestedViewPanel" runat="server" CssClass="viewWrap" Width="1000px"> <telerik:RadTabStrip runat="server" ID="TabStip" MultiPageID="Multipage" SelectedIndex="0" Skin="WebBlue"> <Tabs> <telerik:RadTab runat="server" Text="General" PageViewID="General"/> <telerik:RadTab runat="server" Text="Status" PageViewID="Status"/> <telerik:RadTab runat="server" Text="Coverage" PageViewID="Coverage"/> <telerik:RadTab runat="server" Text="Rejection" PageViewID="Rejection"/> </Tabs> </telerik:RadTabStrip> <telerik:RadMultiPage runat="server" ID="Multipage" SelectedIndex="0" RenderSelectedPageOnly="false" Height="90px"> <telerik:RadPageView runat="server" ID="Genearal"> <table> <tr> <td><b> Name:</b></td> <td><asp:Label id="Label0" runat="server" Text='<%# Eval("ItemName") %>' /></td> </tr> <tr> <td><b> Source:</b></td> <td><asp:Label id="Label1" runat="server" Text='<%# Eval("ItemSource") %>' /></td> </tr> <tr> <td><b> Type:</b></td> <td><asp:Label id="Label2" runat="server" Text='<%# Eval("ItemType") %>' /></td> </tr> <tr> <td><b> Acq. Number:</b></td> <td><asp:Label id="Label3" runat="server" Text='<%# Eval("ItemAcqNumber") %>' /></td> </tr> <tr> <td><b> Description:</b></td> <td><asp:Label id="Label4" runat="server" Text='<%# Eval("ItemDescription") %>' /></td> </tr> </table> </telerik:RadPageView> <telerik:RadPageView runat="server" ID="Status"> <table> <tr> <td><b> Status:</b></td> <td><asp:Label id="Label6" runat="server" Text='<%# Eval("ItemStatus") %>' /></td> </tr> <tr> <td><b> Date:</b></td> <td><asp:Label id="Label7" runat="server" Text='<%# Eval("ItemStatusDate") %>' /></td> </tr> <tr> <td><b> Detail:</b></td> <td><asp:Label id="Label8" runat="server" Text='<%# Eval("ItemStatusDetail") %>' /></td> </tr> </table> </telerik:RadPageView> <telerik:RadPageView runat="server" ID="Coverage"> <table> <tr> <td><b> Coverage 1:</b></td> <td><asp:Label id="Label9" runat="server" Text='<%# Eval("ItemCoverage1") %>' /></td> </tr> <tr> <td><b> Coverage 2:</b></td> <td><asp:Label id="Label10" runat="server" Text='<%# Eval("ItemCoverage2") %>' /></td> </tr> <tr> <td><b> Coverage 2 Type:</b></td> <td><asp:Label id="Label11" runat="server" Text='<%# Eval("ItemCoverage3Description") %>' /></td> </tr> </table> </telerik:RadPageView> <telerik:RadPageView runat="server" ID="Rejection"> <table> <tr> <td><b> Report Delivery:</b></td> <td><asp:Label id="Label12" runat="server" Text="Email" /></td> </tr> <tr> <td><b> Indicator:</b></td> <td><asp:Label id="Label13" runat="server" Text="abc" /></td> </tr> <tr> <td><b> Email Recipients:</b></td> <td><asp:Label id="Label14" runat="server" Text="joe@mail.com|jane@mail.com" /></td> </tr> <tr> <td><b> Node Id:</b></td> <td><asp:Label id="Label15" runat="server" Text="1234" /></td> </tr> <tr> <td><b> FTP Name:</b></td> <td><asp:Label id="Label16" runat="server" Text="ftp://server.com" /></td> </tr> </table> </telerik:RadPageView> </telerik:RadMultiPage> </asp:Panel> </ItemTemplate> </asp:FormView> <asp:ObjectDataSource runat="server" ID="ObjectDataSource" SelectMethod="Get" TypeName="Orbit3UI.Model.MasterItemDetailsDataSource"> <SelectParameters> <asp:ControlParameter ControlID="ItemName" Name="ItemName" PropertyName="Text" /> <asp:ControlParameter ControlID="ItemSource" Name="ItemSource" PropertyName="Text" /> </SelectParameters> </asp:ObjectDataSource> </NestedViewTemplate> </MasterTableView> <HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default"></HeaderContextMenu> </telerik:RadGrid> So what can I do in order to have this work for both sorting/filtering as well as hierarchy expansion?
BTW, I do my own sorting/filtering as well as paging since I cannot load all the records from the database at once.
I am wondering if by intercepting an event and doing something I can stop the grid from trying to interact with the FormView in the NestedTemplateView at all since all I want is to sort the Master Table! .
Thanks.
Sal