I have problems with radTabScript , radMultiPage and Controls created for each tab
CONTEXT:
I have a "container" page called "Solutions.aspx" in which I need to add tabs (controls) with RadTabStrip and RadMultiPage.
Solutions.aspx
<tr> |
<td colspan="2"> |
<div> |
<telerik:RadTabStrip ID="RadTabStripSolution" SelectedIndex="0" runat="server" MultiPageID="RadMultiPageSolution" |
Skin="WebBlue" OnTabClick="RadTabStripSolution_TabClick"> |
</telerik:RadTabStrip> |
<telerik:RadMultiPage ID="RadMultiPageSolution" runat="server" SelectedIndex="0" |
OnPageViewCreated="RadMultiPageSolution_PageViewCreated" BorderWidth="1"> |
</telerik:RadMultiPage> |
</div> |
</td> |
</tr> |
Solutions.aspx.cs
protected void Page_Load(object sender, EventArgs e) |
{ |
//Get variables |
loggedUser = (UserDTO)HttpContext.Current.Session["user"]; |
if (Request.QueryString["RetirementID"] != null) |
randaID = int.Parse(Request.QueryString["RetirementID"]); |
if (!Page.IsPostBack) |
{ |
RetirementDTO retirement = new RetirementController().GetRetirementAllTabs(randaID); |
WorkflowDTO wfRetirement = new WorkflowActions().ShowTabsLoad(loggedUser, retirement); |
if (wfRetirement != null) |
{ |
int count = 0; |
foreach (WorkflowTabDTO wfTab in wfRetirement.Tabs) |
{ |
AddTab(wfTab); |
if (wfTab.Selected) |
{ |
RadTab tab = new RadTab(wfTab.TabName, wfTab.TabId.ToString()); |
if(count <=0) |
AddPageView(tab); |
} |
count++; |
} |
} |
if (wfRetirement.Retirement != null) |
{ |
// Retirement is locked |
if (wfRetirement.Retirement.Edited) |
{ |
//Add session "edit" -> true, edit mode |
if (HttpContext.Current.Session["edit"] != null |
&& !HttpContext.Current.Session["edit"].ToString().Equals(string.Empty)) |
{ |
HttpContext.Current.Session.Remove("edit"); |
} |
HttpContext.Current.Session.Add("edit", true); |
} |
else |
{ |
//Alert |
this.AlertEditPermission.Text = GetGlobalResourceObject("RANDAGlobalResource", "readPermissionAlert").ToString(); |
this.PlaceHolderAlertEdit.Visible = true; |
//Add session "edit" -> false, view mode |
HttpContext.Current.Session.Add("edit", false); |
} |
} |
} |
protected void RadMultiPageSolution_PageViewCreated(object sender, RadMultiPageEventArgs e) |
{ |
string userControlName = "../controls/" + e.PageView.ID + ".ascx"; |
//Control userControl = Page.FindControl(userControlName); |
Control userControl = Page.LoadControl(userControlName); |
//if (userControl == null) |
// userControl = Page.LoadControl(userControlName); |
userControl.ID = e.PageView.ID + "_userControl"; |
if (e.PageView.FindControl(userControl.ID) == null) |
{ |
e.PageView.Controls.Add(userControl); |
} |
} |
protected void RadTabStripSolution_TabClick(object sender, RadTabStripEventArgs e) |
{ |
if (this.RadMultiPageSolution.FindPageViewByID(e.Tab.Text) == null) |
AddPageView(e.Tab); |
e.Tab.PageView.Selected = true; |
} |
private void AddTab(WorkflowTabDTO tabWf) |
{ |
RadTab tab = new RadTab(tabWf.TabName, tabWf.TabId.ToString()); |
tab.Enabled = tabWf.Enable; |
tab.Selected = tabWf.Selected; |
RadTabStripSolution.Tabs.Add(tab); |
} |
private void AddPageView(RadTab tab) |
{ |
RadPageView pageViewCustom = new RadPageView(); |
pageViewCustom.ID = tab.Text; |
if (this.RadMultiPageSolution.FindPageViewByID(tab.Text) == null) |
//if (this.RadMultiPageSolution.FindControl(pageViewCustom.ID) == null) |
{ |
this.RadMultiPageSolution.PageViews.Add(pageViewCustom); |
} |
else |
{ |
this.RadMultiPageSolution.PageViews.Remove(pageViewCustom); |
this.RadMultiPageSolution.PageViews.Add(pageViewCustom); |
} |
//pageViewCustom.Enabled = tabWf.Enable; |
tab.PageViewID = pageViewCustom.ID; |
pageViewCustom.Selected = true; |
Controls:
- Register.ascx
- Research.ascx
- Agreement.ascx
- PeriodicReview.ascx
- Completion.ascx
- Administration.ascx
Example of Register.ascx:
protected void nextButton_Click(object sender, EventArgs e) |
{ |
RetirementDTO ret = new RetirementController().GetRetirementAllTabs(randaId); |
//Get the next Tab and give it the control |
WorkflowTabDTO wfTab = new WorkflowActions().NextTab(ret, (int)TabEnum.REGISTER); |
if (edit) |
{ |
if (SaveData()) |
{ |
UpdateLastTabModified((int)TabEnum.REGISTER); |
GoToNextTab(wfTab); |
GoToNextPageView(wfTab); |
} |
} |
else |
{ |
GoToNextTab(wfTab); |
GoToNextPageView(wfTab); |
} |
} |
private void GoToNextTab(WorkflowTabDTO tab) |
{ |
//Enable and select the next tab |
RadTabStrip tabStrip = (RadTabStrip)Page.Master.FindControl("ContentPlaceHolder").FindControl("RadTabStripSolution"); |
RadTab nextTab = tabStrip.FindTabByText(tab.TabName); |
nextTab.Enabled = tab.Enable; |
nextTab.Selected = tab.Selected; |
} |
/// <summary> |
/// Go to next page |
/// </summary> |
private void GoToNextPageView(WorkflowTabDTO tab) |
{ |
//Go to next page |
RadMultiPage multiPage = (RadMultiPage)Page.Master.FindControl("ContentPlaceHolder").FindControl("RadMultiPageSolution"); |
RadPageView nextPageView = multiPage.FindPageViewByID(tab.TabName); |
if (nextPageView == null) |
{ |
nextPageView = new RadPageView(); |
nextPageView.ID = tab.TabName; |
multiPage.PageViews.Add(nextPageView); |
} |
nextPageView.Selected = true; |
} |
First at all, I add all tabs (enable or not according to bussiness rule) and I select one of them as (tab.Selected = true).
When tabs are enable, I can click on all of them and see them
I can move between tabs in two ways:
1º) Clicking into the Tab
2º) Press the "SAVE&NEXT" button
To set enable next tab and display it, I need to press "Save&Next" button and I need to Add into pageView the new Tab and load it.
Attached: code files and screenshot of example.
ISSUE/PROBLEM:
When I try to pass from one tab (for example: RegisterTAB) to next tab (for example: ResearchTAB) on clicking on the Tab:
- I can't load data into new selected TAB
When I press "Save&Next" Button:
- Next tab is not selected and data isn't loaded.
SUMMARY:
- New Tab is not selected
- Data is not loaded
- I can't see Radalert launch from Controls
- When tab is changed, RadDecorator doesn't work (example: Buttons)
See attached file.
Please, I need to resolve these issues as soon as possible.
Thanks in advance.
Lorena