C#附加到占位符

时间:2010-03-04 17:33:58

标签: c# dynamic controls placeholder

所以我正在尝试创建一个动态表单构建器,人们可以在其中添加新表单并向该表单添加字段(添加字段为该新字段提供了几个文本框和下拉选项)。单击“添加新字段”时,有没有办法附加到占位符控件?另外,从动态添加的控件中获取值的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

一些简单的步骤...... 1)创建控件的新实例。填充任何所需的属性。 2)使用PlaceHolder的.Controls.Add方法将其添加到PlaceHolder。 3)添加控件的事件处理程序。通过使用委托,如图所示,您可以访问控件的值。

        DropDownList ddl = new DropDownList();
        ListItem li0 = new ListItem(string.Empty, "0");
        ListItem li1 = new ListItem("Hello", "1");
        ListItem li2 = new ListItem("World", "2");
        ddl.Items.Add(li0);
        ddl.Items.Add(li1);
        ddl.Items.Add(li2);
        ddl.AutoPostBack = true;
        PlaceHolder1.Controls.Add(ddl);
        ddl.SelectedIndexChanged += delegate(object snd, EventArgs evt) { DoSomething(ddl.SelectedValue); };




    public void DoSomething(string SelectedValue)
    {
        //Do something spectacular here...
    }

答案 1 :(得分:0)

这是另一个选项(附加到文字控件)。每次用户单击按钮时,都会创建一个新字段。我不知道如何将这些动态字段添加到数据库中。我应该做一个foreach吗?

protected void Button1_Click(object sender, EventArgs e)
{
    var thisstring = new StringWriter();
    var writer = new HtmlTextWriter(thisstring);
    var formLabel = new TextBox();
    formLabel.Text = idValue.ToString();
    writer.Write("Field Label:");
    formLabel.RenderControl(writer);
    var typeOptions = new DropDownList();
    typeOptions.DataSource = getfieldtypes();
    typeOptions.DataTextField = "description";
    typeOptions.DataValueField = "id";
    typeOptions.DataBind();
    writer.Write("Field Type:");
    typeOptions.RenderControl(writer);
    writer.WriteBreak();
    Literal1.Text += thisstring;

}