【问题标题】:Gridview loses ItemTemplate after columns are removed删除列后,Gridview 丢失 ItemTemplate
【发布时间】:2009-08-09 03:25:45
【问题描述】:

我正在尝试将数据表绑定到一个网格视图,在该网格视图中我删除了后面代码中的一些自动生成的列。

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

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

<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 时会有任何自动生成的列?
  • 我将它们添加到自己背后的代码中。对于各种原因,我不能只是将我的数据数据绑定到控件并让它像您通常期望的那样创建列。首先必须发生一些消息传递,所以我基本上创建了他的列和它们的参数在我的代码隐藏中。

标签: asp.net gridview state templatefield


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多