首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新面板问题

更新面板问题
EN

Stack Overflow用户
提问于 2011-08-02 01:10:52
回答 2查看 120关注 0票数 0

我有一段代码,它根据问题类型生成一个新问题,并在每次用户单击next按钮时使用新问题更新asp.net更新面板。我的问题是,当我单击next时,如何获得用户当前所在问题的响应。更具体地说,当单击下一个并加载新面板时,如何从更新面板读取前一个值。

代码语言:javascript
复制
    public static int incremental = 0; 
    protected void Page_Load(object sender, EventArgs e)
    {
        UpdateButton2.Text = "Start the Pre-Assessment";

    }

    protected void UpdateButton_Click(object sender, EventArgs e)
    {
        COPDEntities1 copdContext = new COPDEntities1();
        UpdateButton2.Text = "NEXT"; 
        var questions = (from p in copdContext.Questions select p).ToList();
        if (incremental == questions.Count)
            {
                incremental = 0; 

             }

            DateTimeLabel2.Text = questions[incremental].QuestionText;

            if (questions[incremental].QuestionAnswerTypeID == 1)
            {
                RadioButtonList choices = new RadioButtonList();
                choices.ID = "choices";

                choices.ID = Convert.ToString(1);
                choices.Items.Add(new ListItem("True", "0"));
                choices.Items.Add(new ListItem("False", "1"));
                pnlChoice.Controls.Add(choices);
            }
            if (questions[incremental].QuestionAnswerTypeID == 2)
            {
                TextBox text = new TextBox();
                text.ID = "choices";
                pnlChoice.Controls.Add(text);


            }
            if (questions[incremental].QuestionAnswerTypeID == 3)

            {
                int questID = questions[incremental].QuestionID;
                var responses = (from r in copdContext.QuestionResponses where r.QuestionID == questID select r).ToList();

                RadioButtonList choices = new RadioButtonList();
                choices.ID = "choices";
                choices.ID = Convert.ToString(3);
                foreach(var choice in responses)
                {     
                      int choiceID= choice.ResponseID;
                      var multchoices = (from c in copdContext.Responses where c.ResponseID == choiceID select c).FirstOrDefault();
                      choices.Items.Add(new ListItem(multchoices.ResponseLongdescription, Convert.ToString(multchoices.ResponseID)));

                }




                pnlChoice.Controls.Add(choices);
               // Label1.Text = Convert.ToString(responses[0].ResponseID); 


            }
            if (questions[incremental].QuestionAnswerTypeID == 4)
            {
                int questID = questions[incremental].QuestionID;
                var responses = (from r in copdContext.QuestionResponses where r.QuestionID == questID select r).ToList();

                CheckBoxList choices = new  CheckBoxList();
                choices.ID = "choices";
                choices.ID = Convert.ToString(3);
                foreach (var choice in responses)
                {
                    int choiceID = choice.ResponseID;
                    var multchoices = (from c in copdContext.Responses where c.ResponseID == choiceID select c).FirstOrDefault();
                    choices.Items.Add(new ListItem(multchoices.ResponseLongdescription, Convert.ToString(multchoices.ResponseID)));

                }
                pnlChoice.Controls.Add(choices);
            }
            if (questions[incremental].QuestionAnswerTypeID == 5)
            {
                TextBox text = new TextBox();
                text.ID = "choices";
                pnlChoice.Controls.Add(text);

            }
            if (questions[incremental].QuestionAnswerTypeID == 6)
            {


            }
            if (questions[incremental].QuestionAnswerTypeID == 7)
            {
                RadioButtonList choices = new RadioButtonList();


            }
            incremental++; 

    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-08-02 01:20:21

单击按钮时,不要创建单选按钮或复选框。在VS页面设计器或preinit中创建它们,否则它将不会存储在视图状态中,您将无法获取它。在dsigner或preinit中创建控件后,根据您的问题类型显示/隐藏/设置它们的值。这样,您就可以获得以前控件(基本上是当前控件)的值。否则,您可以使用传统的requst"id“方式获取数据,但这将是混乱的。

票数 0
EN

Stack Overflow用户

发布于 2011-08-02 02:24:06

尝试使用MultiView并定义所有可能的视图,而不是动态创建控件并将其添加到面板中:

代码语言:javascript
复制
<asp:MultiView id="MyMultiView" runat="server">
   <asp:View id="FirstView" runat="server">
   <!-- Markup for the first view -->
   </asp:View>
   <asp:View id="SecondView" runat="server">
   <!-- Markup for the second view -->
   </asp:View>
   <asp:View id="ThirdView" runat="server">
   <!-- Markup for the third view -->
   </asp:View>
</asp:MultiView>

然后,从按钮上的代码隐藏中,单击“事件”,将活动视图切换到所需的视图。这样,您将能够获取任何控件的值,无论它是否在活动视图中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6901939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档