を表示していない動的なコントロールを生成:C#が、私は私のページのいずれかで、次のC#のコードを持っている
protected override void Render(HtmlTextWriter writer)
{
//an array named fieldNames is delcared here
writer.Write("<form id=\"Form1\" runat=\"server\" action=\"\">");
writer.Write("<asp:checkboxlist id=\"checkBoxes\" runat=\"server\">");
for (int count = 0; count < fieldNames.GetLength(0); count++)
{ //iterates over the array of field names
writer.Write("<asp:listitem text=" + fieldNames[count] + " value=" + fieldNames[count] + "/>");
}
writer.Write("</asp:checkboxlist>");
writer.Write("</form>");
}
意図は動的に設定の属性を持っていたチェックボックスのリストを作成することです。
これを実行してもエラーは発生しませんが、コントロールはページに表示されません。
私は、次のHTMLを取得し、ページのソースを表示する場合:私は別のアプリケーションでこの投稿を
<form id="Form1" runat="server" action="">
<asp:checkboxlist id="checkBoxes" runat="server">
<asp:listitem text='Spares Part No' value='Spares Part No'/>
<asp:listitem text='Description' value='Description'/>
<asp:listitem text='Site' value='Site'/>
<asp:listitem text='Rack/Bin Number' value='Rack/Bin Number'/>
</asp:checkboxlist>
</form>
関心のうちに、すべてのコントロールが表示されているとそれがうまく動作します。
これはイベントの呼び出し順序に問題がありますか?私は次に何をしようとするかについて少し迷っているので、アドバイスはすばらしくなるだろう。
おかげで、
オリバー
十分です - この種のスクリプトを先に呼び出す方法はありますか? page_loadイベントの使用について考えましたが、イベントの呼び出し順序がわからないことがあります。 –
ページのライフサイクル中に宣言的なASPXマークアップを追加することはできません。どうして? 'ページ'は.Netオブジェクトなので、宣言マークアップとコードの後ろにコードを組み合わせることでコンパイルされます。コードビハインドが実行されるまでにマークアップが解析され、Pageオブジェクトが作成されました。それ以降は、コントロールツリー(マークアップの解析によって作成されたインスタンス化されたオブジェクト)を操作する必要があります。これは良いことです - テキストマークアップをまとめるよりも、エラーが発生しにくく、簡単です。 –
これに感謝します - プレースホルダーのアイデアは私にはよく見えます。あなたの助けに感謝:) –