Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表在回邮时丢失_C#_Asp.net - Fatal编程技术网

C# 表在回邮时丢失

C# 表在回邮时丢失,c#,asp.net,C#,Asp.net,我正在开发一个基于网络的测验系统 我有生成ASP.NET表的代码,其中包含问题列表和指示测验问题答案的单选按钮列表 //Retrieve questions and answers - build the actual quiz DataTable dtQuiz = qr.GetQuizQuestions(QuizID); if (dtQuiz != null && dtQuiz.Rows.Count >= 1) {

我正在开发一个基于网络的测验系统

我有生成ASP.NET表的代码,其中包含问题列表和指示测验问题答案的单选按钮列表

//Retrieve questions and answers - build the actual quiz
        DataTable dtQuiz = qr.GetQuizQuestions(QuizID);

        if (dtQuiz != null && dtQuiz.Rows.Count >= 1)
        {
            foreach (DataRow row in dtQuiz.Rows)
            {
                TableRow tr = new TableRow();
                TableCell tcQuestionNum = new TableCell();
                TableCell tcQuestion = new TableCell();

                tcQuestionNum.VerticalAlign = VerticalAlign.Top;

                tcQuestionNum.Controls.Add(new LiteralControl(row["QuestionNum"].ToString()));
                tcQuestion.Controls.Add(new LiteralControl(row["Question"].ToString()));

                RadioButtonList rblAnswers = qr.GetAnswers(QuizID, Int32.Parse(row["QuestionNum"].ToString()));
                tcQuestion.Controls.Add(rblAnswers);

                tr.Cells.Add(tcQuestionNum);
                tr.Cells.Add(tcQuestion);

                tblQuiz.Rows.Add(tr);
                tblQuiz.DataBind();
            }
        }
这段代码生成的内容很好-出现测验问题,radiobutton列表按预期呈现

当我有一个单独的按钮点击事件时,有些奇怪。在用户选择他们的答案后,我想进行回发并在表中的行中循环,从每行第二个单元格中的radiobutton列表中提取答案。我开始走这条路:

        foreach (TableRow tr in tblQuiz.Rows)
    {
        TableCell tc = tr.Cells[1];
        RadioButtonList rbl = (RadioButtonList) tc.Controls[1];
    }

问题是,当单击第二个按钮(发布答案)时,表中没有行。这是为什么?我如何纠正这一点?

我现在只能想到一个实例,那就是您有代码在
if(!IsPostBack){}
中创建表(或者
if(非IsPostBack)那么…
if VB)

如果是这种情况,回发时将不会创建表。您需要将代码放在
if(!IsPostBack){}
之外,以便在回发时重新创建表

更新

根据你的评论,我建议:

将生成表的代码移动到它自己的子表中。类似于(在vb中)

然后,当您单击按钮生成表时,调用此子项

最后,当您单击按钮提交答案时,请在处理任何选择之前再次调用此sub

最终,需要先创建表,然后才能处理其内容


别担心-创建表不会覆盖用户所做的任何选择。

Hmm-您可能在做一些事情。该表是通过单击按钮生成的。我打赌viewstate没有被添加。我可以尝试将它移动到一个单独的页面,看看是否有帮助。为您添加了一个更新。这将为您解决问题。您在调用之间将表存储在哪里?如果未将其存储在ViewState、GridView的ViewState或会话中,则每次页面处理请求时都需要获取/创建该表。
Private Sub GenerateTable()
   '' Code here
End Sub