GridView在移除列后失去了ItemTemplate

3
我正在尝试将一个datatable绑定到gridview上,但我已经在代码后台删除了一些自动生成的列。我有两个模板列,似乎当我在代码后台更改gridview并删除非模板列时,模板会失去其中的控件。
以以下内容为示例,"Header A"将继续可见,但是删除索引为2及以上的任何列后,"Header 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

编辑

根据我所了解的,这似乎是在更改网格时出现的问题。有没有人知道一个好的解决方法来重新初始化模板列或重新设置它们,以便在删除非模板列时模板不会被删除?


也许我错过了什么,但是...当你将“AutoGenerateColumns”设置为false时,为什么会有任何自动生成的列呢? - Andrew Shepherd
我自己在代码后台添加它们。由于各种原因,我不能只将我的数据绑定到控件并像通常预期的那样创建列。首先需要进行相当多的消息传递,因此我基本上在我的代码后台创建列和它们的参数。 - Middletone
2个回答

1
你需要GridView拥有ViewState吗?试着关闭ViewState。
<asp:GridView ID="DataGrid1" runat="server" AutoGenerateColumns="false" AllowPaging="True" PageSize="10" GridLines="Horizontal" EnableViewState="false">    

0

使用visible=false解决了问题。 在数据绑定时,.NET 不会关联值并且不会在 HTML 页面上创建它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接