如何在导航时在运行时删除控件?

时间:2018-02-07 12:31:34

标签: c# asp.net .net

我将为候选人创建一个在线测试。我有以下要求:

当我按下标签时的下一个按钮控件(问题#,问题文本,带文字的单选按钮应该被清除),按下一个按钮我想要下一个记录,但是在第一个问题及其所有控件的样本处。这怎么可能?如果是的话,请帮助我。这是我试过的代码。 dt是我填充的数据表

 protected void btnPrev_Click(object sender, EventArgs e)
    {
        if (increment > 0)
        {
            increment--;
            NavigateRecords();
        }                //tbFirst.Text = increment.ToString();
        else
        {
            //MessageBox.Show("First Record");
        }
    }



protected void btnLast_Click(object sender, EventArgs e)
    {
        maxRows = dt.Rows.Count;
        if (increment != maxRows - 1)
        {
            // tbFirst.Text = increment.ToString();
            increment = maxRows - 1;
            NavigateRecords();
        }
    }                


protected void btnFirst_Click(object sender, EventArgs e)
    {
        if (increment > 0)
        {
            increment = 0;
            NavigateRecords();
        }                //tbFirst.Text = increment.ToString();

}


    protected void btnNext_Click(object sender, EventArgs e)          
    {
        maxRows = dt.Rows.Count;
        if (increment != maxRows - 1)
        {
            increment++;

            NavigateRecords();
        }
        else
        {

        }
    }

    public void NavigateRecords()
    {
        Page.Controls.Clear();
        dr = dt.Rows[increment];
        Label[] questionNo = new Label[dt.Rows.Count];
        Label[] questionText = new Label[dt.Rows.Count];
        RadioButton[] rbs = new RadioButton[dt.Rows.Count];

            //question no
            questionNo[increment] = new Label();
            questionNo[increment].Text = "<h3><div class=\"center-
           block\">Question: " + dt.Rows[increment]["SrNo"].ToString() + "</div></h3>";

            //question text
            questionText[increment] = new Label();
            questionText[increment].Text = "<h3>" + dt.Rows[increment]["QuestionText"].ToString() + "</h3>";
            divQuestionText.Controls.Add(questionNo[increment]);
            divQuestionText.Controls.Add(questionText[increment]);

            for (j = 3; j <= 6; j++)
            {
                rbs[increment] = new RadioButton();
                //option
                rbs[increment].GroupName = increment.ToString();
                rbs[increment].Text = dt.Rows[increment][j].ToString() + "<br>";
                divQuestionText.Controls.Add(rbs[increment]);

            }
        }

1 个答案:

答案 0 :(得分:0)

最简单的方法是为每一步创建一个自己的Panel。然后在btnNext_Click - 事件中,你必须在背景中推动面板或使用Control.Visible属性使其消失,并将下一个放在前面。

通过这种方式,您可以使用&#34; VS Form Inspector&#34;来编辑所需的所有控件。并且不必弄乱代码中的控制位置。

MFG

BMS