動的に作成されたコントロール内で HTML、ASP テキストボックス、およびボタンを生成するタスクは、複雑なものです。幸いなことに、これを実現するにはいくつかのアプローチがあります。
この例では、コード内で HTML を手動で生成し、テキストボックスを動的に作成しています。コントロール フレームワークを使用したボタン。この方法は機能しますが、生成されるコントロールの数が増えると、退屈でエラーが発生しやすくなります。
次のような一連の同様のコントロールを生成する場合危険またはエリアのリストとして、ListView または DataGrid を使用することをお勧めします。これらのコントロールはデータ バインディングのサポートを組み込み、データ ソースに基づいてコントロールを簡単にレンダリングできるようにします。
クライアントに慣れている場合-サイド スクリプトでは、JavaScript または jQuery を使用して、要素をその場で動的に作成および操作できます。このアプローチにより、サーバー側コードの必要性がなくなり、よりインタラクティブな機能が可能になります。
これは、ListView を使用して、動的に作成された内部の危険のリストを生成する例です。 area:
private void CreateArea(int areaCount) { // ... existing code // Create a ListView for hazards ListView hazardList = new ListView(); hazardList.ID = "lvHazards" + areaCount; hazardList.DataSource = new string[] { "Hazard1", "Hazard2", "Hazard3" }; hazardList.DataBind += HazardList_DataBind; phHazard.Controls.Add(hazardList); } protected void HazardList_DataBind(object sender, ListViewDataBindEventArgs e) { ListView listView = (ListView)sender; foreach (string hazard in e.DataItem as string[]) { // Create a new DropDownList for the hazard DropDownList ddHazard = new DropDownList(); ddHazard.ID = "ddHazard" + hazard; ddHazard.Items.Add(new ListItem("Hazard1", "Hazard1")); // Create a new TextBox for the hazard description TextBox txtHazardDesc = new TextBox(); txtHazardDesc.ID = "txtHazardDesc" + hazard; // Add the controls to the current ListView item listView.Controls.Add(ddHazard); listView.Controls.Add(new LiteralControl(" ")); listView.Controls.Add(txtHazardDesc); listView.Controls.Add(new LiteralControl("<br />")); } }
この例では、動的に作成された各エリア内の危険のリストを表示する ListView を作成する方法を示します。 ListView のデータ バインディングは HazardList_DataBind イベント ハンドラーで処理され、そこでコントロールが動的に作成され、適切な ListView 項目に追加されます。
動的に作成されたコントロールは、状態を維持するためにすべてのページ ポストバックで再作成する必要があることに注意してください。動的コントロールに関連付けられたデータが失われないように、ViewState またはキャッシュ メカニズムを使用してデータを保存することを検討してください。
以上が動的に作成された ASP.NET コントロール内で ASP.NET コントロールを効率的に作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。