私は GridView コントロールを採用して拡張しています。
public class MightyGridView : GridView
{
// ...
}
そして、GridView のすぐ上にいくつかのボタンを追加したいと思います。
protected override void OnRowCreated(GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
Parent.Controls.AddAt(Parent.Controls.IndexOf(this) - 1, new LiteralControl("<div>"));
Parent.Controls.AddAt(Parent.Controls.IndexOf(this) - 1, new ImageButton() { ImageUrl = _images[_imageTypes.ShowAllColumns], Width = 16 });
Parent.Controls.AddAt(Parent.Controls.IndexOf(this) - 1, new LiteralControl("</div>"));
これは、1 つの非常に小さな問題で問題なく機能します。GridView の前に [br /] がいくつかある場合
<asp:Button ID="Button3" runat="server" Text="Button" />
<br /> <!-- This one! -->
<asp:mightygridview
ID="mightyGridView"
runat="server"
AllowSorting="true"
AllowHiding="true"
autogenerateeditbutton="true"
OnRowEditing="mightyGridView_RowEditing"
OnRowCancelingEdit="mightyGridView_RowCancelingEdit"
OnRowUpdating="mightyGridView_RowUpdating">
</asp:mightygridview>
次に、ボタンの直後にコントロールが追加され、
(または他のタグ) がコントロールと GridView を分割します。
1 つの解決策は、GridView テーブルがレンダリングされている場所にコントロールを挿入することです。したがって、GridView のタグは 内にラップされます。しかし、サーバー側の制御がないため (runat="server" がない)、生成されたこれにアクセスできないと思います。これを達成できた場合、コントロールと対応する GridView を分離できませんでした。
何か案は?