Gridview теряет ItemTemplate после удаления столбцов

Я пытаюсь привязать таблицу данных к сетке, где я удалил некоторые из автоматически сгенерированных столбцов в коде позади.

У меня есть два столбца шаблона, и кажется, что когда я изменяю представление сетки в коде позади и удаляю столбцы без шаблона, шаблоны теряют элементы управления, которые в них находятся.

Используя следующий пример, «Заголовок 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

ИЗМЕНИТЬ

Итак, из того, что я прочитал, это похоже на проблему, возникающую при изменении сетки. Кто-нибудь знает хороший обходной путь для повторной инициализации столбцов шаблона или их повторной настройки, чтобы при удалении столбцов, не являющихся шаблонами, шаблоны hte также не удалялись?


person Middletone    schedule 09.08.2009    source источник
comment
Может быть, я что-то упускаю, но... почему есть автоматически сгенерированные столбцы, когда вы установили для AutoGenerateColumns значение false?   -  person Andrew Shepherd    schedule 09.08.2009
comment
Я добавляю их в код позади себя. По разным причинам я не могу просто привязать свои данные к элементу управления и создать столбцы, как вы обычно ожидаете. Сначала должен произойти довольно много сообщений, поэтому я в основном создаю столбцы и параметры для них. в моем коде.   -  person Middletone    schedule 09.08.2009


Ответы (2)


Вам нужно, чтобы GridView имел ViewState? Попробуйте отключить ViewState.

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

привет решил с visibile=false. на databind .net не будет связывать значения и не создавать их на html-странице

person elle0087    schedule 02.09.2020