Asp.net 删除列后Gridview将丢失ItemTemplate

Asp.net 删除列后Gridview将丢失ItemTemplate,asp.net,gridview,state,templatefield,Asp.net,Gridview,State,Templatefield,我正在尝试将datatable绑定到gridview,在gridview中我删除了代码隐藏中的一些自动生成列 我有两个模板列,当我在code behind中修改gridview并删除非模板列时,模板会失去其中的控件 使用以下示例,“标题a”将继续可见,但“标题B”在移除位于索引2及以上的任何列后将消失。我正在为网格的codebehind中创建列,作为报告工具的一部分。如果我不删除列,那么似乎就没有问题了 <asp:GridView ID="DataGrid1" runat="server"

我正在尝试将datatable绑定到gridview,在gridview中我删除了代码隐藏中的一些自动生成列

我有两个模板列,当我在code behind中修改gridview并删除非模板列时,模板会失去其中的控件

使用以下示例,“标题a”将继续可见,但“标题B”在移除位于索引2及以上的任何列后将消失。我正在为网格的codebehind中创建列,作为报告工具的一部分。如果我不删除列,那么似乎就没有问题了

<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

文本A
标题B
文本B
对于i=2到DataGrid1.Columns.Count-1
DataGrid1.Columns.RemoveAt(2)
下一个
编辑


所以从我所读到的来看,当网格被改变时,这似乎是一个问题。有人知道重新初始化模板列或重新设置它们的好方法吗?这样,当删除非模板列时,模板也不会被删除?

您需要GridView具有ViewState吗?尝试关闭ViewState

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

visibile=false解决hi问题

在databind.net上,不会关联值,也不会在html页面上创建它们

也许我遗漏了什么,但是。。。当您将“AutoGenerateColumns”设置为false时,为什么会有任何自动生成的列?我在自己的代码中添加了它们。出于各种原因,我不能像您通常期望的那样将数据绑定到控件并让它创建列。。有相当多的消息必须首先发生,所以我基本上在我的代码隐藏中创建了columsn和它们的参数。