Hi All,
I have a RadTabStrip/RadMultiPage arrangement patterned after the Load on Demand and the Dynamic Page View examples. In one view (ReportsPage) I have a user control that contains a RadSplitter with 2 RadPanes and a RadSplitBar. In the two panes I want to dynamically add controls based on the value of a session object. However I haven't got that far due to another issue. Initially in the left pane I have another user control (ReportSelection) that contains a RadTreeView which is populated as expected in the page load of the parent control. When I click on another tab and return to the original tab the user control with the tree view no longer appears so it seems like a view state issue. Code snippets are below. If anyone can help me with this I'd appreciate it.
Thanks,
Jim
Mainpage.aspx:
Mainpage .cs:
ReportsPage.ascx:
ReportsPage.cs:
ReportSelection.ascx:
ReportSelection.cs:
I have a RadTabStrip/RadMultiPage arrangement patterned after the Load on Demand and the Dynamic Page View examples. In one view (ReportsPage) I have a user control that contains a RadSplitter with 2 RadPanes and a RadSplitBar. In the two panes I want to dynamically add controls based on the value of a session object. However I haven't got that far due to another issue. Initially in the left pane I have another user control (ReportSelection) that contains a RadTreeView which is populated as expected in the page load of the parent control. When I click on another tab and return to the original tab the user control with the tree view no longer appears so it seems like a view state issue. Code snippets are below. If anyone can help me with this I'd appreciate it.
Thanks,
Jim
Mainpage.aspx:
| <script type="text/javascript"> |
| function onTabSelecting(sender, args) |
| { |
| if (args.get_tab().get_pageView()) |
| { |
| if (args.get_tab().get_pageView().get_id()) |
| { |
| args.get_tab().set_postBack(false); |
| } |
| } |
| } |
| </script> |
| <telerik:RadTabStrip ID="TopTabStrip" runat="server" |
| MultiPageID="TopMultiPage" SelectedIndex="3" |
| Skin="Office2007" style="padding-left:50px;" |
| ontabclick="TopTabStrip_TabClick" onclienttabselecting="onTabSelecting"> |
| </telerik:RadTabStrip> |
| <telerik:RadMultiPage ID="TopMultiPage" runat="server" Height="100%" |
| SelectedIndex="2" CssClass="MultipageWrapper" |
| onpageviewcreated="TopMultiPage_PageViewCreated" Width="100%"> |
| </telerik:RadMultiPage> |
Mainpage .cs:
| protected void Page_Load( object sender, EventArgs e ) |
| { |
| if ( !Page.IsPostBack ) |
| { |
| AddTab( "Admin" ); |
| AddTab( "Configure" ); |
| RadTab tab = AddTab( "Reports" ); |
| AddTab( "Help" ); |
| AddPageView( this.TopTabStrip.FindTabByText( "Reports" ) ); |
| tab.PageView.Selected = true; |
| this.TopTabStrip.SelectedIndex = 2; |
| } |
| } |
| private RadTab AddTab( string tabName ) |
| { |
| RadTab tab = new RadTab(); |
| tab.Text = tabName; |
| this.TopTabStrip.Tabs.Add( tab ); |
| return tab; |
| } |
| private void AddPageView( RadTab tab ) |
| { |
| RadPageView pageView = new RadPageView(); |
| pageView.ID = tab.Text; |
| this.TopMultiPage.PageViews.Add( pageView ); |
| tab.PageViewID = pageView.ID; |
| } |
| protected void TopMultiPage_PageViewCreated( object sender, RadMultiPageEventArgs e ) |
| { |
| string userControlName = e.PageView.ID;// +"CS.ascx"; |
| if ( null != userControlName ) |
| { |
| Control userControl = null; |
| if ( "Admin".Equals( userControlName ) ) |
| { |
| userControl = Page.LoadControl( "AdminPage.ascx" ); |
| userControl.ID = e.PageView.ID + "_userControl"; |
| } |
| else if ( "Configure".Equals( userControlName ) ) |
| { |
| userControl = Page.LoadControl( "Configuration.ascx" ); |
| userControl.ID = e.PageView.ID + "_userControl"; |
| } |
| else if ( "Reports".Equals( userControlName ) ) |
| { |
| userControl = Page.LoadControl( "ReportsPage.ascx" ); |
| userControl.ID = e.PageView.ID + "_userControl"; |
| } |
| else if ( "Help".Equals( userControlName ) ) |
| { |
| userControl = Page.LoadControl( "HelpPage.ascx" ); |
| userControl.ID = e.PageView.ID + "_userControl"; |
| } |
| if ( null != userControl ) |
| e.PageView.Controls.Add( userControl ); |
| } |
| } |
| protected void TopTabStrip_TabClick( object sender, RadTabStripEventArgs e ) |
| { |
| AddPageView( e.Tab ); |
| e.Tab.PageView.Selected = true; |
| } |
ReportsPage.ascx:
| <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="RadTreeView1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="ReportPane" /> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManagerProxy> |
| <telerik:RadSplitter ID="ReportPageSplitter" Runat="server" Skin="Office2007" |
| Height="100%" Width="100%" > |
| <telerik:RadPane ID="LeftPane" Runat="server" Height="" Width="30%"> |
| </telerik:RadPane> |
| <telerik:RadSplitBar ID="RadSplitBar1" Runat="server" CollapseMode="Both" /> |
| <telerik:RadPane ID="RightPane" runat="server" Height=""> |
| </telerik:RadPane> |
| </telerik:RadSplitter> |
ReportsPage.cs:
| protected void Page_Load( object sender, EventArgs e ) |
| { |
| if ( !Page.IsPostBack ) |
| { |
| // Check for session variables to determine what to display in each pane. |
| object obj = Session[ "ReportMode" ]; |
| string reportMode = ""; |
| if ( null == obj ) |
| { |
| reportMode = "ReportSelection"; |
| Session[ "ReportMode" ] = reportMode; |
| } |
| if ( "ReportSelection".Equals( reportMode ) ) |
| { |
| // Show the report selection control. |
| ReportSelection rptSelect = (ReportSelection) LoadControl( "ReportSelection.ascx" ); |
| this.LeftPane.Controls.Add( rptSelect ); |
| } |
| else |
| { |
| // Show the report parameter control. |
| ReportParameters rptParms = (ReportParameters) LoadControl( "ReportParameters.ascx" ); |
| this.LeftPane.Controls.Add( rptParms ); |
| } |
| } |
| } |
ReportSelection.ascx:
| <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server"> |
| </telerik:RadAjaxManagerProxy> |
| <telerik:RadTreeView ID="RptSelectTreeView" Runat="server" Skin="Office2007" |
| onnodeclick="RptSelectTreeView_NodeClick"> |
| </telerik:RadTreeView> |
ReportSelection.cs:
| protected void Page_Load( object sender, EventArgs e ) |
| { |
| if ( !Page.IsPostBack ) |
| { |
| // Build the tree. |
| // TODO - build this based on info from the database. |
| RadTreeNode rootNode = new RadTreeNode( "Reports" ); |
| rootNode.PostBack = false; |
| rootNode.Expanded = true; |
| RadTreeNode directReportsNode = new RadTreeNode( "Category 1" ); |
| directReportsNode.PostBack = false; |
| RadTreeNode childNode = new RadTreeNode( "Report1" ); |
| directReportsNode.Nodes.Add( childNode ); |
| childNode = new RadTreeNode( "Report2" ); |
| directReportsNode.Nodes.Add( childNode ); |
| rootNode.Nodes.Add( directReportsNode ); |
| this.RptSelectTreeView.Nodes.Add( rootNode ); |
| } |
| } |