1

前のページで与えられた回答に基づいて、フィールドの組み合わせで約10の異なるバリエーションを持つことができるフォームがあります(ほとんどは同じですが、いくつかの変更があります)。私は、10の別々のページを作成するのではなく、動的にすることにしました。最終的には、これによりデータベースからフォームセットアップがプルされますが、今のところ、動的部分を機能させることを試みています。次のコードはちょっと動作しますが、奇妙な結果になります。

private void AddTestControls()
{
    var newbox = new TextBox();
    newbox.ID = "FirstBox";
    newbox.Text = "This is dynamic";
    newbox.CssClass = "stepHeader";
    DynamicDiv1.Controls.Add(newbox);

    var newlit = new Literal();
    newlit.ID = "FirstLit";
    newlit.Text = ".<br/>.";
    DynamicDiv1.Controls.Add(newlit);

    newbox.ID = "SecondBox";
    newbox.Text = "This is also dynamic";
    newbox.CssClass = "step";
    DynamicDiv1.Controls.Add(newbox);

}

手順を踏んですべてのプロパティが正しく設定されていますが、ページが最終的にレンダリングされると、SecondBoxコントロールのみが表示されます。の痕跡はありませんFirstBox。(たとえば)それSecondBox自体のオブジェクトになるように変更すると、両方が表示されますが、最終的にデータベースからフォームを作成することを考えていたため、事態が複雑になる可能性があります。newebox2Divのコントロールのコレクションにテキストボックスオブジェクトを追加するために、テキストボックスオブジェクトを再作成する必要がある理由がわかりません。私はこれについてすべて間違っているのですか、それともどこかで一歩を逃しているだけですか?

4

2 に答える 2

1

newbox「SecondBox」は「FirstBox」への参照をまだ保持しているため、「FirstBox」を上書きしています。TextBox2 番目のボックス用に新規作成します。

var newbox = new TextBox();
newbox.ID = "FirstBox";
newbox.Text = "This is dynamic";
newbox.CssClass = "stepHeader";
DynamicDiv1.Controls.Add(newbox);

var newlit = new Literal();
newlit.ID = "FirstLit";
newlit.Text = ".<br/>.";
DynamicDiv1.Controls.Add(newlit);

// Create a new TextBox
var secondBox = new TextBox();
secondBox.ID = "SecondBox";
secondBox.Text = "This is also dynamic";
secondBox.CssClass = "step";
DynamicDiv1.Controls.Add(secondBox);

なぜこれが複雑になるのかよくわかりませんが、テキストボックスを作成するメソッドを作成する方が簡単な場合は、次のようにすることができます。

TextBox CreateTextBox(string id, string text, string cssClass)
{
    var box = new TextBox();
    box.ID = id;
    box.Text = text;
    box.CssClass = cssClass;
    return box;
}

その後

var newBox = CreateTextBox("FirstBox", "This is dynamic", "stepHeader");
DynamicDiv1.Controls.Add(newBox);
于 2012-11-30T23:44:33.920 に答える
0

どのように機能すると思われますか。newbox1は参照であるため、最初に に追加された後、DynamicDiv1そこにあり、その を変更するとTextTextが変更されます。このSOは便利だと思うかもしれません。このSOは、あなたが抱えている同じ問題を示しています。

于 2012-11-30T23:46:43.997 に答える