在ASP.Net中创建动态问卷

时间:2018-09-30 06:10:43

标签: asp.net .net-4.5 repeater wizard

我正在尝试进行测试;一组问题和答案,其中每个问题都有多个选项可供选择(单选按钮列表)。所有问题和可能的答案都存储在数据库中。如果所有问题都是一个接一个的,使用中继器实现此操作非常简单,但是我必须一次显示一个问题,就像向导一样。

我尝试使用向导和中继器的组合,但是遇到了很多错误(下面列出)。有没有办法创建这个?我不是在寻找代码,只是在寻找有关执行此操作的想法。

这就是我累了(失败了):

<app-top-navigation class="sticky-top d-block"></app-top-navigation>
<router-outlet></router-outlet>
<app-footer></app-footer>

这会产生以下错误:

<asp:Repeater runat="server" ID="rptBronzeTest">
    <HeaderTemplate>
        <asp:Wizard 
            ID="wizTest" 
            runat="server" 
            ActiveStepIndex="0"
            DisplaySideBar="false" 
            OnNextButtonClick="wizTest_NextButtonClick" >
            <WizardSteps>                       
    </HeaderTemplate>

    <ItemTemplate>
        <asp:WizardStep ID="wsStep" runat="server" StepType='<%# Container.ItemIndex == 0  ? "Start" : (Container.ItemIndex == ((IList)((Repeater)Container.Parent).DataSource).Count-1 ? "Finish" : "Step"%>'>
            <asp:HiddenField runat="server" ID="hfQuestionID" Value='<%# Eval("QuestionID")%>' />
            <div class="row">
                <!-- QuestionID, AnswerID, TrackID, QuestionText, QuestionOrder, NumOptions -->
                <div class="col-centered col-sm-12"><label><%# Eval("QuestionOrder")%>.&nbsp;<%# Eval("QuestionText")%></label></div>
            </div>
            <div class="survey-question">
                <div class="row" style="padding-left:20px;">
                    <!-- QuestionID, AnswerID, Answer, AnswerOrder -->
                    <asp:RadioButtonList runat="server" ID="rblAnswers" RepeatDirection="Vertical" DataTextField="Answer" DataValueField="AnswerID"></asp:RadioButtonList>
                </div>
            </div>
        </asp:WizardStep>
    </ItemTemplate>

    <FooterTemplate>
                <asp:WizardStep ID="wsComplete" runat="server" StepType="Complete">

                </asp:WizardStep>
            </WizardSteps>
            <FinishNavigationTemplate>
                <asp:ImageButton runat="server" ID="ibFinishPrev" 
                    ImageUrl="~/assets/images/Left_small.gif" 
                    CommandName="MovePrevious" 
                    CausesValidation="false"/>
                <asp:ImageButton runat="server" ID="ibFinishComplete" 
                    ImageUrl="~/assets/images/Check_small.gif" 
                    OnClientClick="if(confirm('This will submit your test. Continue?')){ disableSubmit();}else return false;" 
                    CommandName="Finish" 
                    OnClick="ibFinishComplete_Click" />
            </FinishNavigationTemplate>
        </asp:Wizard>

    </FooterTemplate>
</asp:Repeater>

如果我删除向导并仅使用中继器,则所有问题/答案都会正确显示,一个接一个。

更新

尝试在服务器端动态将向导添加到占位符。尽管跟踪显示它添加了所有向导步骤,但是当我运行它时,我看到问题1和可能的答案,请单击“下一步”,什么也没有!

System.Web.UI.WebControls.WizardStepCollection must have items of type 'System.Web.UI.WebControls.WizardStepBase'. 'ItemTemplate' is of type 'System.Web.UI.HtmlControls.HtmlGenericControl'.

0 个答案:

没有答案