ASP.NET GridView
コントロールのヘッダーとフッターのHTML出力を効率的に上書きする方法はありますか?ASP.NETグリッドビューコントロールのヘッダー出力を上書きする
Repeater
のHeaderTemplate
タグと似た方法を実装したい、またはHTML出力をページコードの中に動的に組み込む必要はありません。これらの2種類のオプションがASP.NET GridView
コントロールで使用できる場合。
ASP.NET GridView
コントロールのヘッダーとフッターのHTML出力を効率的に上書きする方法はありますか?ASP.NETグリッドビューコントロールのヘッダー出力を上書きする
Repeater
のHeaderTemplate
タグと似た方法を実装したい、またはHTML出力をページコードの中に動的に組み込む必要はありません。これらの2種類のオプションがASP.NET GridView
コントロールで使用できる場合。
ASP.Net Control Adapterを調べることを検討することをおすすめします。私は非常に基本的なもののためにそれらを使用していたが、ちょうどScott Guthrieノートとして:
制御アダプタあなたは レンダリング出力を変更および/または微調整、 プラグインに任意のASP.NETサーバーコントロール と上書きすることができますその論理 の論理。
Toolkitには、GridViewを含めて、いくつかの例のために描画できる「出荷時の」アダプタも含まれています。繰り返しますが、私は100%あなたが望むものを正確に行うことができるとは確信していませんが、確かにそれをチェックする価値があります。あなたのベルトの下に別のASP.Netのトリックを置くだけであれば。
また、コントロールを継承し、レンダー機能をオーバーライドすることもできます。私はASP.NETのラジオボタンの欠点を修正するためにそれをしなければならなかった。基本的な考え方は、あなたのニーズに合わせてそれを変更することができるかもしれない、ここにある:GridViewので
http://www.codeproject.com/KB/webforms/How_group_RButtons.aspx
、あなたは完全に「破壊」とヘッダおよび/またはフッタを再作成するRowCreatedイベントを使用することができます。これは、あなたがこれらのコントロールへのアクセスを持っているでしょうし、あなたがデータに基づいて好きしかし、その後、それらを操作することができRowDataBound中に、RowCreatedで行われているので
if (e.Row.RowType = DataControlRowType.Header)
{
// At this point you have access to e.Row.Cells
// You can now empty the collection and recreate it.
// If you create a singular cell in the collection
// you can then make its ColumnSpan reach across
// the length of the entire table. Then inside this
// cell you can add any set of controls you want.
// I've used this method to combine column headers
// and add specialty controls that simply wouldn't
// working using the HeaderTemplate
}
を:このイベント中に、確認してください。これは、フッターでの複雑な計算や、ソートなどに基づいてヘッダーの画像を調整する場合に便利です。
RowCreatedでセル単位のチェックを変更するには、列にドロップダウンを追加してフィルタリングを許可したい場合は、
if (e.Row.RowType = DataControlRowType.Header)
{
e.Row.Cells[0].Controls.Clear();
var ddlFilter = new DropDownList();
//add options etc
e.Row.Cells[0].Controls.Add(ddlFilter);
}
あなたは、単一のセルに変換し、新しいコントロールを追加するつもりだったなら、私はちょうどShowHeader=false
を設定し、GridViewの上で私のマークアップ/制御情報について
感謝を置きます。私は次のプロジェクトを検討します。 –