2009-08-09 10 views
3

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

私は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 

EDIT

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

+0

多分私は何か不足していますが、なぜ "AutoGenerateColumns"をfalseに設定したときに自動生成された列がありますか? –

+0

自分自身のコードの中にそれらを追加します。いろいろなレスソンのために私はデータをコントロールにデータバインドすることはできませんし、あなたが典型的に期待しているようなcolumsnを作成することはできません。メッセージのかなりのビットが最初に起こるので、私は彼がcolumsnとそれらのパラメータ私のコードビハインドで。 – Middletone

答えて

0

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

<asp:GridView ID="DataGrid1" runat="server" AutoGenerateColumns="false" AllowPaging="True" PageSize="10" GridLines="Horizontal" EnableViewState="false">  
関連する問題