2012-08-01 6 views
0

오류가 발생합니다 : 인덱스가 범위를 벗어났습니다. 음수가 아니고 콜렉션 크기보다 작아야합니다. \ r \ n 매개 변수 이름 : 인덱스 (내 코드 gvGrid.Columns.RemoveAt (0)가 아래에서 실행될 때). 여기서 누락 된 부분이 무엇입니까?asp.net에서 gridview.Columns.RemoveAt를 호출 할 때 오류가 발생했습니다.

gvGrid.DataSource = eCustomerMgr.GetCustHistory(oCust); 
gvGrid.DataBind(); 
gvGrid.Columns.RemoveAt(0); 

데이터를 내보내는 데 코드 블록을 사용하고 있습니다.

업데이트 : gvGrid.Columns.Count 위에 마우스를 올려 때

enter image description here

그러나, 나는 0

enter image description here

를 얻을 :
이 @Lajos 아르 밧의 제안을 사용하여,이 내가 볼 것입니다

왜 그리드 수가 0으로 표시됩니까?

답변

3

나는 Columns.Count 0을 보여주는 이유는 모르겠지만 당신이 대안에 관심이 있다면, 아마도 gvGrid.HeaderRow.Cells[0].Visible = false;을 시도해 볼 수 있습니다. 여기서 0은 제거하려는 열 #입니다. 희망이 도움이됩니다.

+0

감사. 이것은 현재 작동 할 것입니다. – DotNetRookie

1

먼저 결합하고 제거하거나

gvGrid.DataSource = eCustomerMgr.GetCustHistory(oCust); 
gvGrid.DataBind(); 
gvGrid.Columns.RemoveAt(0); 

그리드에 결박 전에 열을 제거 바인딩하기 전에 데이터 소스에 대한 열을 제거, 당신은 확실 경우 당신은 데이터 테이블

DataTable t; 
    t.Columns.Remove("columnName"); 
    t.Columns.RemoveAt(columnIndex); 
+0

행운과 같은 오류 .. – DotNetRookie

+0

일부 데이터 테이블에 eCustomerMgr.GetCustHistory (oCust)를 할당하고 DataTable과 같은 열 이름을 가진 데이터 또는 빈 데이터 테이블이 있는지 확인하십시오. dt = eCustomerMgr.GetCustHistory (oCust); dt.Columns.Count와 같은 dt 열을 가져 와서 열을 가져 왔는지 확인하십시오. – Adil

0

이 있다고 가정 데이터, 첫 번째 DataBind, RemoveAt.

+1

댓글이어야합니다. – dtsg

+1

정말 왜 downvote? 나는 우리가 동시에 쓴 것이라고 생각한다. – PepeDeLew

0

먼저 eCustomerMgr.GetCustHistory(oCust); 제거 열 전에 데이터 바인딩 그리드를 반환되어 있는지 확인합니다 ..

1
gvGrid.DataSource = eCustomerMgr.GetCustHistory(oCust); 
gvGrid.DataBind(); 
if (gvGrid.Columns.Count > 0) 
{ 
    gvGrid.Columns.RemoveAt(0); 
} 
0

먼저 AutoGenerateColumns="False"을 완료하고 columnns 이름을 정의했는지 확인하십시오.

동적으로 열을 제거하려면 열 이름을 미리 정의해야합니다. 으로 예 :

<Columns> 
      <asp:BoundField DataField="Name" /> 
      <asp:BoundField DataField="Address" /> 
     </Columns> 

이제 0 열을 제거하면 열이 제거됩니다.

+0

@DotNetRookie 확실히 그리드는 autogeneratecolumn 속성이 true이고 viewstate에서 사용할 수있는 전체 날짜를 바인딩합니다. –

관련 문제