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
<
telerik:RadGrid
ID
=
"OrbitRadGrid"
runat
=
"server"
AllowFilteringByColumn
=
"True"
AllowSorting
=
"True"
VirtualItemCount
=
"50000"
GridLines
=
"None"
AllowPaging
=
"true"
PageSize
=
"30"
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
>
<
NestedViewSettings
DataSourceID
=
"MasterItemsDetails"
>
<
ParentTableRelation
>
<
telerik:GridRelationFields
DetailKeyField
=
"ItemName"
MasterKeyField
=
"Item_Name"
/>
<
telerik:GridRelationFields
DetailKeyField
=
"ItemSource"
MasterKeyField
=
"Source_Name"
/>
</
ParentTableRelation
>
</
NestedViewSettings
>
<
NestedViewTemplate
>
<
asp:FormView
ID
=
"FormView"
runat
=
"server"
DataSourceID
=
"MasterItemsDetails"
>
<
ItemTemplate
>
<
asp:Panel
ID
=
"NestedViewPanel"
runat
=
"server"
CssClass
=
"viewWrap"
>
<
div
class
=
"contactWrap"
>
<
table
>
<
tr
>
<
td
>
<
fieldset
style
=
"padding: 10px;"
>
<
legend
style
=
"padding: 5px;"
><
b
>General info</
b
></
legend
>
<
table
width
=
"400"
>
...
</
table
>
</
fieldset
>
</
td
>
<
td
>
<
table
width
=
"200"
>
<
tr
>
<
td
>
<
fieldset
style
=
"padding: 10px;"
>
<
legend
style
=
"padding: 5px;"
><
b
>Status</
b
></
legend
>
<
table
>
...
</
table
>
</
fieldset
>
</
td
>
</
tr
>
<
tr
>
<
td
>
<
fieldset
style
=
"padding: 10px;"
>
<
legend
style
=
"padding: 5px;"
><
b
>Coverage</
b
></
legend
>
<
table
>
...
</
table
>
</
fieldset
>
</
td
>
</
tr
>
</
table
>
</
td
>
<
td
>
<
fieldset
style
=
"padding: 10px;"
>
<
legend
style
=
"padding: 5px;"
><
b
>Rejection Information</
b
></
legend
>
<
table
width
=
"300"
>
...
</
table
>
</
fieldset
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
asp:Panel
>
</
ItemTemplate
>
</
asp:FormView
>
</
NestedViewTemplate
>
</
MasterTableView
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
></
HeaderContextMenu
>
</
telerik:RadGrid
>
<
asp:ObjectDataSource
runat
=
"server"
ID
=
"MasterItemsDetails"
SelectMethod
=
"Get"
TypeName
=
"Orbit3UI.Model.MasterItemDetailsDataSource"
>
<
SelectParameters
>
<
asp:Parameter
Name
=
"itemName"
Type
=
"String"
/>
<
asp:Parameter
Name
=
"itemSource"
Type
=
"String"
/>
</
SelectParameters
>
</
asp:ObjectDataSource
>
<telerik:RadGrid ID="RadGrid1" runat="server" DataSourceID="ObjectDataSource1" GridLines="None" |
Skin="Office2007" BorderStyle="Solid" BorderWidth="1pt"> |
<MasterTableView DataSourceID="ObjectDataSource1" AutoGenerateColumns="false" DataKeyNames="Datastore:ResultSummaryId"> |
<RowIndicatorColumn> |
<HeaderStyle Width="20px" /> |
</RowIndicatorColumn> |
<ExpandCollapseColumn> |
<HeaderStyle Width="20px" /> |
</ExpandCollapseColumn> |
<Columns> |
<telerik:GridBoundColumn DataField="Datastore:ResultSummaryId" HeaderText="ID" HeaderStyle-Width="75pt"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="SummaryName" HeaderText="Name"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="AttemptRate Variations" HeaderText="Variation Attempt Rate" |
DataFormatString="{0:P}" HeaderStyle-Width="75pt" HeaderStyle-HorizontalAlign="Center" |
ItemStyle-HorizontalAlign="Right"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="PassRate Variations" HeaderText="Variation Pass Rate" |
DataFormatString="{0:P}" HeaderStyle-Width="75pt" HeaderStyle-HorizontalAlign="Center" |
ItemStyle-HorizontalAlign="Right"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="AttemptRate Results" HeaderText="Result Attempt Rate" |
DataFormatString="{0:P}" HeaderStyle-Width="75pt" HeaderStyle-HorizontalAlign="Center" |
ItemStyle-HorizontalAlign="Right"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn DataField="PassRate Results" HeaderText="Result Pass Rate" |
DataFormatString="{0:P}" HeaderStyle-Width="75pt" HeaderStyle-HorizontalAlign="Center" |
ItemStyle-HorizontalAlign="Right"> |
</telerik:GridBoundColumn> |
</Columns> |
<DetailTables> |
<telerik:GridTableView DataSourceID="ObjectDataSource2" runat="server" |
AutoGenerateColumns="true"> |
<ParentTableRelation> |
<telerik:GridRelationFields DetailKeyField="Datastore:ResultSummaryId" MasterKeyField="Datastore:ResultSummaryId" /> |
</ParentTableRelation> |
</telerik:GridTableView> |
</DetailTables> |
</MasterTableView> |
<FilterMenu EnableTheming="True"> |
<CollapseAnimation Duration="200" Type="OutQuint" /> |
</FilterMenu> |
</telerik:RadGrid> |
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetTestPassSummaryByResultSummaryTo" |
TypeName="ScratchWebApplication.ServiceReference1.AtlasReportingServiceClient"> |
<SelectParameters> |
<asp:QueryStringParameter DefaultValue="WIN_CLIENT_UA:347184,WIN_CLIENT_UA:347194,WIN_CLIENT_UA:347845,WIN_CLIENT_UA:347866,WIN_CLIENT_UA:350235,WIN_CLIENT_UA:350237,WIN_CLIENT_UA:351070,WIN_CLIENT_UA:351082,WIN_CLIENT_UA:351098" |
Name="dataStoreRCIdCombos" QueryStringField="rc" Type="String" /> |
</SelectParameters> |
</asp:ObjectDataSource> |
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectMethod="GetTestPassSummaryByResultSummaryTo" |
TypeName="ScratchWebApplication.ServiceReference1.AtlasReportingServiceClient"> |
<SelectParameters> |
<asp:SessionParameter SessionField="Datastore:ResultSummaryId" Name="dataStoreRCIdCombos" Type="String" DefaultValue="" /> |
</SelectParameters> |
</asp:ObjectDataSource> |
<
telerik:RadAsyncUpload
ID
=
"RadAsyncUpload1"
runat
=
"server"
AutoAddFileInputs
=
"False"
onfileuploaded
=
"RadAsyncUpload1_FileUploaded"
TargetFolder
=
"~/Central/Images/"
AllowedMimeTypes
=
"jpg, jpeg, bmp, png"
>
<
FileFilters
>
<
telerik:FileFilter
Description
=
"Images (jpg, jpeg, bmp, png)"
Extensions
=
"jpg, jpeg, bmp, png"
/>
</
FileFilters
>
</
telerik:RadAsyncUpload
>