2

そのため、人々が新しいフォームを追加してそのフォームにフィールドを追加できる動的フォームビルダーを作成しようとしています(フィールドを追加すると、その新しいフィールドのいくつかのテキストボックスとドロップダウンオプションが表示されます)。「新しいフィールドの追加」をクリックしたときにプレースホルダー コントロールに追加する方法はありますか? また、これらの動的に追加されたコントロールから値を取得する最良の方法は何ですか?

4

2 に答える 2

0

これはもう 1 つのオプションです (リテラル コントロールに追加します)。ユーザーがボタンをクリックするたびに、新しいフィールドが作成されます。これらの動的フィールドをデータベースに追加する方法がわかりません。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;

}
于 2010-03-05T15:12:10.400 に答える
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...
    }
于 2010-03-04T21:09:51.527 に答える