2009-08-09 6 views
3

Gridview에 데이터 테이블을 바인딩하려고하는데 코드의 일부에서 자동 생성 된 열을 제거했습니다.Gridview는 열 제거 후 ItemTemplate을 잃습니다.

두 개의 템플릿 열이 있는데, 코드에서 Gridview를 변경하고 템플릿이 아닌 열을 제거하면 템플릿에있는 컨트롤이 느슨해 진 것 같습니다.

다음 샘플을 사용하여 "머리글 A"는 계속 표시되지만 인덱스 2 이상에있는 열을 제거하면 "머리글 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 

편집

그래서 내가 읽은 어떤에서이 그리드가 변경 될 때 발생하는 문제가 될 것으로 보인다. 누구든지 좋은 해결 방법을 알고 템플릿 열을 다시 초기화하거나 다시 설정하여 템플릿이 아닌 열을 제거하면 hte 템플릿도 제거되지 않도록 할 수 있습니까?

+0

어쩌면 내가 누락되었지만 ... "AutoGenerateColumns"를 false로 설정하면 자동 생성 열이 왜 생깁니 까? –

+0

나 자신의 코드에 추가합니다. 여러 resons 난 그냥 내 데이터를 컨트롤에 databind 수 없습니다 당신이 일반적으로 기대할 수있는 것처럼 columsn 만들 수 있습니다. 처음에는 그래서 나는 기본적으로 그 columsn 및 매개 변수를 만들려면 메시징 공정한 비트가 있습니다. 내 코드 숨김에. – Middletone

답변

0

GridView에 ViewState가 필요합니까? ViewState를 끄십시오.

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