2009-08-09 5 views
3

Ich versuche, eine Datentabelle an eine Gridview zu binden, wo ich einige der automatisch generierten Spalten im Code entfernt habe.GridView verliert ItemTemplate, nachdem Spalten entfernt wurden

Ich habe zwei Template-Spalten und es scheint, dass, wenn ich die Gridview im Code hinter ändern und entfernen Sie die nicht-Template-Spalten, dass die Vorlagen die Steuerelemente verlieren, die in ihnen sind.

Mit dem folgenden Beispiel wird "Header A" weiterhin sichtbar sein, aber "Header B" verschwindet nach dem Entfernen von Spalten, die sich bei Index 2 und höher befinden. Ich erstelle Spalten in meinem Codebehind für das Raster als Teil eines Reporting-Tools. Wenn ich die Spalten nicht entferne, scheint es kein Problem zu geben.

<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

Also von dem, was ich gelesen habe, scheint ein Problem zu sein, das auftritt, wenn das Raster verändert wird. Kennt jemand eine gute Problemumgehung, um die Vorlagenspalten neu zu initialisieren oder sie neu einzurichten, so dass, wenn die Nicht-Vorlagenspalten entfernt werden, diese Vorlagen auch nicht entfernt werden?

+0

Vielleicht fehlt mir etwas, aber ... warum gibt es irgendwelche automatisch generierten Spalten, wenn Sie "AutoGenerateColumns" auf false gesetzt haben? –

+0

Ich füge sie in den Code hinter mir. Für verschiedene Resons kann ich meine Daten nicht einfach an die Steuerung binden und sie so erstellen, wie man es normalerweise erwartet. Es gibt ein gutes Stück Messaging, das zuerst passieren muss, also erstelle ich im Grunde die Spalten und die Parameter für sie in meinem Codebehind. – Middletone

Antwort

0

Benötigen Sie GridView, um ViewState zu haben? Versuchen Sie, ViewState zu deaktivieren.