0
protected void lbChatFriend_Click(object sender, EventArgs e)
        {
            ChatDivContent.Visible = true;
            System.Web.UI.HtmlControls.HtmlGenericControl createDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
            createDiv.ID = "div";
            createDiv.Style.Add(HtmlTextWriterStyle.BackgroundColor, "Yellow");
            createDiv.Style.Add(HtmlTextWriterStyle.Position, "relative");
            createDiv.Style.Add(HtmlTextWriterStyle.Color, "Red");
            createDiv.Style.Add(HtmlTextWriterStyle.Height, "50px");
            createDiv.Style.Add(HtmlTextWriterStyle.Width, "50px");
            createDiv.InnerHtml = " I'm a div ";
            string chatFriend = ((LinkButton)sender).Text;
            createDiv.Attributes["title"] = chatFriend;
            ChatDivContent.Controls.Add(createDiv);
        }
 <div id="ChatDivContent">
     <DIV id="div" style="background-color:Yellow;position:relative;color:Red;height:50px;width:50px;"
 title="dinesh"> I'm a div </DIV></div>

<----これは、すべてのポストバックでの私の出力です

私は間違っているのですか?

4

1 に答える 1

0

ポストバックで古いコントロールを再作成していないと思います(ユーザーがそれをクリックするとfe LinkButton)。そのため、最近作成された div のみが表示されます。

ポストバックごとに動的に作成されたすべてのコントロールを再作成する必要があります (最新のロード イベントで)。また、イベントをトリガーして ViewState を維持するために、以前と同じ ID を取得する必要があります。

作成するコントロールの数 (に格納できる) がわかっている場合は、コントロールViewStateID に追加することでカウンター変数から ID を取得できます。次に、ページのinitイベントで正しい ID を使用してそれらを再作成できます。

推奨される測定値:

または、これを自動的に行うRepeaterのような組み込みのData-Bound Controlのいずれかを使用します。それらを設定して呼び出すだけです。DataSourceDataBind()

これは、実装に関する同様の質問に対する私の答えです

于 2012-07-22T11:27:37.320 に答える