What I have been trying to accomplish is having a RadGrid calculate its height to fill the rest of a RadPageView of a RadTabStrip/RadMultiPage control. The RadMultiPage should fill what is left of its RadPane, below all other elements that might be above the RadTabStrip. The first time the page is loaded, everything seems to be rendered and sized correctly, however, when resizing the window it seems that only the Grid that is currently visible gets resized, and all the others do not get rendered correctly even though they should all be repainted according to the scripts.
<telerik:RadSplitter ID="InquiryDetailSplitter" runat="server" Orientation="Vertical" OnClientResized="SetElementDimensions" OnClientLoaded="SetElementDimensions"> <telerik:RadPane ID="InquiryDetailFieldsPane" runat="server" Width="300px"> ... </telerik:RadPane> <telerik:RadPane ID="InquiryDetailGridsPane" runat="server"> <asp:Label ID="InquiryDetailPacketGridLabel" runat="server" CssClass="GridLabel" Font-Bold="true" Font-Size="80%"></asp:Label> <telerik:RadGrid ID="InquiryDetailPacketGrid" runat="server" ShowFooter="true" AutoGenerateColumns="false" CssClass="AccountGrid" OnItemCommand="InquiryDetailPacketGrid_ItemCommand" OnItemDataBound="InquiryDetailPacketGrid_ItemCommand"> <MasterTableView ClientDataKeyNames="Id" DataKeyNames="Id"> <Columns> <telerik:GridTemplateColumn HeaderText="View" UniqueName="View" DataField="Id" Aggregate="Count" FooterAggregateFormatString="{0} Accounts" HeaderStyle-Width="85px"> <ItemTemplate> <asp:LinkButton ID="ShowDetailLink" runat="server" CommandName="ShowDetail" CommandArgument='<%# Eval("ID") %>' Text="View" /> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true" /> </ClientSettings> <FooterStyle HorizontalAlign="Right" /> </telerik:RadGrid> <asp:Label ID="InquiryDetailNotesLabel" runat="server" CssClass="GridLabel" Font-Bold="true" Font-Size="80%">Additional information</asp:Label> <telerik:RadTabStrip ID="InquiryDetailNotesTabStrip" runat="server" MultiPageID="InquiryDetailNotesMultiPage" ShowBaseLine="false" AutoPostBack="false" > <Tabs> <telerik:RadTab Text="Combined" Value="Combined" Visible="false" /> <telerik:RadTab Text="Transactions" Value="Transactions" Visible="false" /> <telerik:RadTab Text="Correspondence" Value="Correspondence" Visible="false" /> <telerik:RadTab Text="Comments" Value="Comments" Visible="false" /> <telerik:RadTab Text="Miscellaneous" Value="Misc" Visible="false" /> <telerik:RadTab Text="Online Activity" Value="OnlineActivity" /> <telerik:RadTab Text="Attachments" /> </Tabs> </telerik:RadTabStrip> <telerik:RadMultiPage ID="InquiryDetailNotesMultiPage" runat="server" SelectedIndex="0"> <telerik:RadPageView ID="CombinedPageView" runat="server" Visible="false" Height="100%"> <telerik:RadGrid ID="InquiryDetailCombinedGrid" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%" > <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="NoteDateTime" DataFormatString="{0:g}" UniqueName="NoteDateTime" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridBoundColumn HeaderText="Text" DataField="Text" UniqueName="Text" AllowSorting="false" /> <telerik:GridBoundColumn HeaderText="Collector" DataField="Collector" UniqueName="Collector" HeaderStyle-Width="100px" Visible="false" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView ID="TransactionsPageView" runat="server" Visible="false" Height="100%"> <telerik:RadGrid ID="InquiryDetailTransactionsGrid" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%"> <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="NoteDateTime" DataFormatString="{0:g}" UniqueName="NoteDateTime" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridBoundColumn HeaderText="Text" DataField="Text" UniqueName="Text" AllowSorting="false" /> <telerik:GridBoundColumn HeaderText="Collector" DataField="Collector" UniqueName="Collector" HeaderStyle-Width="100px" Visible="false" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView ID="CorrespondencePageView" runat="server" Visible="false" Height="100%"> <telerik:RadGrid ID="InquiryDetailCorrespondenceGrid" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%"> <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="NoteDateTime" DataFormatString="{0:g}" UniqueName="NoteDateTime" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridBoundColumn HeaderText="Text" DataField="Text" UniqueName="Text" AllowSorting="false" /> <telerik:GridBoundColumn HeaderText="Collector" DataField="Collector" UniqueName="Collector" HeaderStyle-Width="100px" Visible="false" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView ID="CommentsPageView" runat="server" Visible="false" Height="100%"> <telerik:RadGrid ID="InquiryDetailCommentsGrid" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%"> <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="NoteDateTime" DataFormatString="{0:g}" UniqueName="NoteDateTime" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridBoundColumn HeaderText="Text" DataField="Text" UniqueName="Text" AllowSorting="false" /> <telerik:GridBoundColumn HeaderText="Collector" DataField="Collector" UniqueName="Collector" HeaderStyle-Width="100px" Visible="false" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView ID="MiscellaneousPageView" runat="server" Visible="false" Height="100%"> <telerik:RadGrid ID="InquiryDetailMiscellaneousGrid" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%"> <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="NoteDateTime" DataFormatString="{0:g}" UniqueName="NoteDateTime" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridBoundColumn HeaderText="Text" DataField="Text" UniqueName="Text" AllowSorting="false" /> <telerik:GridBoundColumn HeaderText="Collector" DataField="Collector" UniqueName="Collector" HeaderStyle-Width="100px" Visible="false" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView ID="OnlineActivityPageView" runat="server" Height="100%"> <telerik:RadGrid ID="InquiryDetailOnlineActivityGrid" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%"> <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="Date" DataFormatString="{0:g}" UniqueName="OnlineActivityDate" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridTemplateColumn HeaderText="Activity" UniqueName="Activity"> <ItemTemplate> <%# AccountActionType((IAccountAction)Container.DataItem)%> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn HeaderText="User" DataField="UserFullName" UniqueName="UserFullName" /> <telerik:GridBoundColumn HeaderText="Details" DataField="Details" UniqueName="Details" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> <telerik:RadPageView ID="AttachmentsPageView" runat="server" Height="100%"> <telerik:RadGrid ID="InquiryDetailAttachments" runat="server" AutoGenerateColumns="false" Height="100%"> <MasterTableView Height="100%"> <Columns> <telerik:GridBoundColumn HeaderText="Date/Time" DataField="UploadDate" DataFormatString="{0:g}" UniqueName="UploadDate" DataType="DateTime" HeaderStyle-Width="130px" /> <telerik:GridTemplateColumn HeaderText="Name" UniqueName="Name"> <ItemTemplate> <%# AttachmentLink((CawFile)Container.DataItem) %> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridBoundColumn HeaderText="File Size" DataField="FormattedFileSize" UniqueName="FormattedFileSize" /> </Columns> </MasterTableView> <ClientSettings> <Scrolling AllowScroll="true" UseStaticHeaders="true"/> </ClientSettings> </telerik:RadGrid> </telerik:RadPageView> </telerik:RadMultiPage> </telerik:RadPane></telerik:RadSplitter><telerik:RadScriptBlock ID="GridDimensionScriptBlock" runat="server"> <script type="text/javascript"> // this function will set the MultiPage dimensions and then for every PageView in the MultiPage, // the nested RadGrid within the PageView will be redrawn to fulfill the new CSS rules. function SetElementDimensions(sender, args) { // set the dimensions according to the new window size var setHeight = SetMultiPageDimensions(); // get the multi page control to interate through the page views var telerikMultiPage = $find("<%= InquiryDetailNotesMultiPage.ClientID %>"); var pageCollection = telerikMultiPage.get_pageViews(); // iterate the page views for (var i = 0; i != pageCollection._data.length; ++i) { var pageIteration = pageCollection._data[i]; // check the size on the Page View element to make sure that it is sized at 100 var pageElement = $("#" + pageIteration._element.id); pageElement.height(setHeight); // if the page has children, use them to select the grid by its id and set rgDataDiv height if (pageIteration._element.children.length > 0) { var nestedGridId = pageIteration._element.children[0].id; var nestedGrid = $find(nestedGridId); $("#" + nestedGridId).height(setHeight); nestedGrid.repaint(); } } } // Calculates and sets the height of the MultiPage element. This is accomplished by getting the top offset of the tabStrip and the // height of the tabStrip. These dimensions are then added together and subtracted from the height of the splitter itself for // the needed difference. function SetMultiPageDimensions(sender, args) { // get overall height available var splitterDivHeight = $("#" + "<%= InquiryDetailSplitter.ClientID %>").height(); var tabStripDiv = $("#" + "<%= InquiryDetailNotesTabStrip.ClientID %>"); // figure out the offset of the tab strip, and the height of the tabStrip to use in calculating available space // additional two: one for border and one for extra space var topOffset = tabStripDiv.offset().top + tabStripDiv.height() + 2; var additionalInfoMultiPageDiv = $("#" + "<%= InquiryDetailNotesMultiPage.ClientID %>"); var heightToSet = splitterDivHeight - topOffset; additionalInfoMultiPageDiv.height(heightToSet); return heightToSet; } </script></telerik:RadScriptBlock>