3

コードビハインドで自動生成された列の一部を削除したグリッドビューにデータテーブルをバインドしようとしています。

私は 2 つのテンプレート列を持っています。コード ビハインドでグリッドビューを変更し、テンプレート化されていない列を削除すると、テンプレートがそれらのコントロールを失うようです。

以下をサンプルとして使用すると、「ヘッダー A」は引き続き表示されますが、インデックス 2 以上にある列を削除すると「ヘッダー B」は消えます。レポート ツールの一部として、グリッドのコード ビハインドに列を作成しています。列を削除しなければ、問題はないようです。

<asp:GridView ID="DataGrid1" runat="server" AutoGenerateColumns="false" AllowPaging="True" PageSize="10" GridLines="Horizontal">
    <Columns>
        <asp:TemplateField HeaderText="Header A"  >
            <ItemTemplate >
                  Text A
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField>
            <HeaderTemplate>
                      Header B
            </HeaderTemplate>
            <ItemTemplate>
                      Text B
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

For i = 2 To DataGrid1.Columns.Count - 1
      DataGrid1.Columns.RemoveAt(2)
Next

編集

私が読んだことから、これはグリッドが変更されたときに発生する問題のようです。テンプレート列を再初期化するか、テンプレート以外の列が削除されたときにテンプレートも削除されないように再設定するための良い回避策を知っている人はいますか?

4

2 に答える 2

1

ViewState を持つために GridView が必要ですか? ViewState をオフにしてみてください。

<asp:GridView ID="DataGrid1" runat="server" AutoGenerateColumns="false" AllowPaging="True" PageSize="10" GridLines="Horizontal" EnableViewState="false">    
于 2009-09-09T21:25:25.943 に答える