首页 > 解决方案 > 在按钮单击时动态添加父中继器控件

问题描述

我真的不知道要使用什么方法来实现这一目标:

我到处寻找我想要实现的解决方案,但无济于事。尝试动态创建“父”中继器控件和“子”中继器控件一直很困难。“子”中继器控件将位于父“中继器控件内的位置。

基本上,我正在尝试创建一种情况,管理员将通过单击“添加问题”按钮添加这些问题来创建考试问题;每个问题都将保存并显示在带有选项(答案)的重复器控件中,学生可以在其中选择和提交答案。

每个问题都将类似于中继器标题,并且在每个中继器控件内,将有一个按钮,其中选项将添加到问题中(也可以删除该选项)。

问题将是“父”中继器控件,而选项将是“子”中继器。

例如当管理员登录时。在网页上,管理员将在文本框中输入问题,然后单击“添加问题”按钮,问题将被添加到数据库中并显示在带有另一个按钮的控件内以添加选项(即答案);这些选项也将被保存和显示,供学生选择。

每个选项都带有一个单选按钮,以便参加考试的学生可以通过单击每个问题的任何单选按钮来选择一个选项。

这是两个问题的屏幕截图,每个问题有两个选项,用户可以选择并提交

屏幕截图显示管理员如何添加问题和选项

第二个屏幕截图显示了问题和选项如何出现以供用户选择

我尝试为此动态创建中继器控件,但我不知道这是否是实现此类目标的正确方法。

SqlCommand cmd = new SqlCommand();
SqlDataAdapter sda = new SqlDataAdapter();
DataSet ds = new DataSet();
DataTable dt = new DataTable();
Repeater Repeater1 = new Repeater();

protected void Page_Load(object sender, EventArgs e)
{
}

protected void Button1_Click(object sender, EventArgs e)
{
    Repeater1.DataSource = ds;
    Repeater1.DataBind();

    foreach (RepeaterItem repeatItem in Repeater1.Items)
    {
        if (repeatItem.ItemIndex == 0)
        {
            RepeaterItem headerItem = new RepeaterItem(repeatItem.ItemIndex, ListItemType.Header);
            HtmlGenericControl hTag = new HtmlGenericControl("h4");
            hTag.InnerHtml = "Employee Name";
            repeatItem.Controls.Add(hTag);
        }

        RepeaterItem repeaterItem = new RepeaterItem(repeatItem.ItemIndex, ListItemType.Item);
        Label lbl = new Label();
        lbl.Text = string.Format("{0} {1} <br />", ds.Tables[0].Rows[repeaterItem.ItemIndex]
          ["FirtsName"], ds.Tables[0].Rows[repeaterItem.ItemIndex]["LastName"]);
        repeaterItem.Controls.Add(lbl);

        repeaterItem = new RepeaterItem(repeaterItem.ItemIndex, ListItemType.Separator);
        LiteralControl ltrlHR = new LiteralControl();

        ltrlHR.Text = "<hr />";
        repeaterItem.Controls.Add(ltrlHR);
    }

    Panel1.Controls.Add(Repeater1);
}

我真的需要你的帮助来实现这一点,拜托。谢谢

标签: c#html

解决方案


推荐阅读