2009-08-09 71 views
3

我想綁定一個datatable到一個gridview,我已經刪除了代碼後面的一些自動生成的列。Gridview丟失列後刪除ItemTemplate

我有兩個模板列,它似乎是當我更改後面的代碼中的gridview並刪除非模板列,模板鬆動其中的控件。

使用以下示例作爲示例,「標題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 

編輯

所以從我讀過這似乎是當電網發生改變時出現的問題。有誰知道有一個很好的解決方法來重新初始化模板列或重新設置它們,這樣當非模板列被刪除時,模板也不會被刪除?

+0

也許我錯過了一些東西,但是......爲什麼當您將「AutoGenerateColumns」設置爲false時,是否有任何自動生成的列? – 2009-08-09 03:42:21

+0

我將它們添加到自己後面的代碼中。對於各種不同的數據,我不能將數據綁定到控件上,並讓它像您通常所期望的那樣創建列。有一些消息必須先發生,所以我基本上創建了他的列和參數在我的代碼隱藏。 – Middletone 2009-08-09 03:58:41

回答

0

你需要GridView來擁有ViewState嗎?嘗試關閉ViewState。

<asp:GridView ID="DataGrid1" runat="server" AutoGenerateColumns="false" AllowPaging="True" PageSize="10" GridLines="Horizontal" EnableViewState="false">