Hi,
I need to create a questionnaire in my website. I was using standalone multipage explained here:
http://demos.telerik.com/aspnet-ajax/tabstrip/examples/multipage/standalone-multipage/defaultcs.aspx
I have a set of radio button questions and I use page views to divide them into pages.On the last page I show a result graph based on the answers chosen. I need the questions to be required without defaulting a radio button value. Howevere, I am not able to do the validation on a page basis.
Below is the code that I am using. Please advise:
<
script
type
=
"text/javascript"
>
var minIndex = 0,
maxIndex = 5,
globalSelectedIndex,
multiPage,
NextPage,
PreviousPage;
function pageLoad() {
multiPage = $find("<%= rmRiskTolerance.ClientID %>");
PreviousPage = $find("<%= PreviousPage.ClientID %>");
NextPage = $find("<%= NextPage.ClientID %>");
//Initialization of the global selected index of the RadMultiPage control
globalSelectedIndex = multiPage.get_selectedIndex();
}
function PrevClicked(sender, args) {
globalSelectedIndex--;
multiPage.set_selectedIndex(globalSelectedIndex);
if (globalSelectedIndex == minIndex) {
sender.set_enabled(false);
}
if (!NextPage.get_enabled()) {
NextPage.set_enabled(true);
}
}
function NextClicked(sender, args) {
Page_ClientValidate("QuestionnaireValidationGroup");
if (Page_IsValid) {
globalSelectedIndex++;
multiPage.set_selectedIndex(globalSelectedIndex);
if (globalSelectedIndex == maxIndex) {
sender.set_enabled(false);
}
if (!PreviousPage.get_enabled()) {
PreviousPage.set_enabled(true);
}
return true;
}
else {
return false;
}
}
</
script
>
<
div
class
=
"page_header"
>
<
h1
>Risk Tolerance Questionnaire</
h1
>
</
div
>
<
div
>
<
telerik:RadMultiPage
ID
=
"rmRiskTolerance"
runat
=
"server"
SelectedIndex
=
"0"
>
<
telerik:RadPageView
ID
=
"pvStep1"
runat
=
"server"
>
<
h2
>Step 1 : Complete the Questionnaire</
h2
>
<
p
>
<
h4
>1. When do you expect to begin distributions from the Plan?
</
h4
>
<
asp:RequiredFieldValidator
ID
=
"rbBeginDistributionRequired"
runat
=
"server"
ControlToValidate
=
"rbBeginDistribution"
ErrorMessage
=
"* Required"
SetFocusOnError
=
"true"
ValidationGroup
=
"QuestionnaireValidationGroup"
></
asp:RequiredFieldValidator
>
<
asp:RadioButtonList
ID
=
"rbBeginDistribution"
runat
=
"server"
>
<
asp:ListItem
Text
=
"Within 5 years"
Value
=
"2"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"In 5–10 years"
Value
=
"4"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"In 5–10 years"
Value
=
"8"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"In more than 15 years"
Value
=
"12"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
p
>
<
p
>
<
h4
>2. Once you begin taking distributions from the Plan, how long do you expect the distributions to last?
</
h4
>
<
asp:RequiredFieldValidator
ID
=
"rbDistributionTimeRequired"
runat
=
"server"
ControlToValidate
=
"rbDistributionTime"
ErrorMessage
=
"* Required"
SetFocusOnError
=
"true"
ValidationGroup
=
"QuestionnaireValidationGroup"
></
asp:RequiredFieldValidator
>
<
asp:RadioButtonList
ID
=
"rbDistributionTime"
runat
=
"server"
>
<
asp:ListItem
Text
=
"I plan to take a lump sum distribution"
Value
=
"1"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"1 to 5 years"
Value
=
"2"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"5 to 10 years"
Value
=
"3"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"10 years or more"
Value
=
"4"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
p
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"pvStep2"
runat
=
"server"
>
<
h2
>Step 1 : Continued</
h2
>
<
p
>
<
h4
>3. Investing involves a trade-off between risk and return. Which statement best describes your investment goals?
</
h4
>
<
asp:RequiredFieldValidator
ID
=
"rbInvestmentGoalsRequired"
runat
=
"server"
ControlToValidate
=
"rbInvestmentGoals"
ErrorMessage
=
"* Required"
SetFocusOnError
=
"true"
ValidationGroup
=
"QuestionnaireValidationGroup"
></
asp:RequiredFieldValidator
>
<
asp:RadioButtonList
ID
=
"rbInvestmentGoals"
runat
=
"server"
>
<
asp:ListItem
Text
=
"Protect the value of my account. In order to minimize the chance for loss, I am willing to accept the lower long-term returns provided by conservative investments."
Value
=
"1"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Keep risk to a minimum while trying to achieve slightly higher returns than the returns provided by investments that are more conservative."
Value
=
"3"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Balance moderate levels of risk with moderate levels of returns."
Value
=
"6"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Maximize long-term investment returns. I am willing to accept large and sometimes dramatic fluctuations in the value of my investments."
Value
=
"10"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
p
>
<
p
>
<
h4
>4. Select the portfolio you would be most comfortable investing in:
</
h4
>
<
asp:RequiredFieldValidator
ID
=
"rbPortfolioRequired"
runat
=
"server"
ControlToValidate
=
"rbPortfolio"
ErrorMessage
=
"* Required"
SetFocusOnError
=
"true"
ValidationGroup
=
"QuestionnaireValidationGroup"
></
asp:RequiredFieldValidator
>
<
asp:RadioButtonList
ID
=
"rbPortfolio"
runat
=
"server"
>
<
asp:ListItem
Text
=
"Portfolio 1—Annual investment return of 5% or loss of 4%."
Value
=
"2"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Portfolio 1—Annual investment return of 10% or loss of 8%."
Value
=
"3"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Portfolio 1—Annual investment return of 20% or loss of 16%."
Value
=
"5"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"Portfolio 1—Annual investment return of 30% or loss of 25%."
Value
=
"6"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
p
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"pvStep3"
runat
=
"server"
>
<
h2
>Step 1 : Continued</
h2
>
<
p
>
<
h4
>5. If the value of your portfolio decreased by more than 20% in one year, how would you react?
</
h4
>
<
asp:RequiredFieldValidator
ID
=
"rbPortfolioDecreaseRequired"
runat
=
"server"
ControlToValidate
=
"rbPortfolioDecrease"
ErrorMessage
=
"* Required"
SetFocusOnError
=
"true"
ValidationGroup
=
"QuestionnaireValidationGroup"
></
asp:RequiredFieldValidator
>
<
asp:RadioButtonList
ID
=
"rbPortfolioDecrease"
runat
=
"server"
>
<
asp:ListItem
Text
=
"I would not change my portfolio."
Value
=
"11"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"I would wait at least one year before changing to options that are more conservative."
Value
=
"8"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"I would wait at least three months before changing to options that are more conservative."
Value
=
"3"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"I would immediately change to options that are more conservative."
Value
=
"1"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
p
>
<
p
>
<
h4
>6. If the stock market increased by 15% in one year while the value of your portfolio (invested primarily in bonds and cash) increased by 4% in the same year, how would you react?
</
h4
>
<
asp:RequiredFieldValidator
ID
=
"rbStockMarketIncreaseRequired"
runat
=
"server"
ControlToValidate
=
"rbStockMarketIncrease"
ErrorMessage
=
"* Required"
SetFocusOnError
=
"true"
ValidationGroup
=
"QuestionnaireValidationGroup"
></
asp:RequiredFieldValidator
>
<
asp:RadioButtonList
ID
=
"rbStockMarketIncrease"
runat
=
"server"
>
<
asp:ListItem
Text
=
"I would replace the bond and cash positions of my portfolio with stocks."
Value
=
"10"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"I would add more stocks to my portfolio but not enough to make them a majority position."
Value
=
"3"
></
asp:ListItem
>
<
asp:ListItem
Text
=
"I would not change my portfolio."
Value
=
"1"
></
asp:ListItem
>
</
asp:RadioButtonList
>
</
p
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"pvResult"
runat
=
"server"
>
<
h2
>Step 2 : Score your Questionnaire</
h2
>
<
p
>
Your score is <
b
>
<
asp:Literal
ID
=
"litScore"
runat
=
"server"
></
asp:Literal
></
b
> and the corresponding M Portfolio Allocation Model is <
b
>
<
asp:Literal
ID
=
"litAllocationModel"
runat
=
"server"
></
asp:Literal
></
b
>.
</
p
>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
<
div
class
=
"buttonContainer"
>
<
telerik:RadButton
ID
=
"PreviousPage"
Text
=
"Previous"
ToolTip
=
"Click to see previous page"
runat
=
"server"
Enabled
=
"false"
AutoPostBack
=
"false"
OnClientClicked
=
"PrevClicked"
>
</
telerik:RadButton
>
<
telerik:RadButton
ID
=
"NextPage"
Text
=
"Next"
ToolTip
=
"Click to see next page"
runat
=
"server"
CausesValidation
=
"true"
AutoPostBack
=
"true"
OnClientClicked
=
"NextClicked"
OnClick
=
"NextPage_Click"
>
</
telerik:RadButton
>
</
div
>
</
div
>
code behind:
protected void NextPage_Click(object sender, EventArgs e)
{
if (rmRiskTolerance.SelectedPageView.ID == "pvResult")
{
List<int> scoreList = new List<int>();
GetRadioButtonListValues(rmRiskTolerance, scoreList);
GetQuestionnaireResult(scoreList);
}
}