删除列后,Gridview会丢失ItemTemplate

时间:2009-08-09 03:25:46

标签: asp.net gridview state templatefield

我正在尝试将数据表绑定到gridview,在那里我删除了后面代码中的一些自动生成的列。

我有两个模板列,似乎当我在后面的代码中更改gridview并删除非模板列时,模板会松开其中的控件。

使用以下作为样本,“标题A”将继续可见,但删除位于索引2及以上的任何columsn后,“标题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

修改

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

2 个答案:

答案 0 :(得分:0)

您是否需要GridView才能拥有ViewState?尝试关闭ViewState。

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

答案 1 :(得分:0)

他用visibile=false解决了。 在databind .net上不会关联值,也不要在html页面上创建它们