2016-07-20 3 views
1

GridView 열을 수동으로 생성 할 때 문제가 있습니다. 내 프로그램은이 선에서 정지 :GridView.AutoGenerateColumns false 일 때 셀 번호 제한이 있습니까?

e.Row.Cells[42].Text = "x"; 

과 아래의 오류가 발생합니다 :

"Specified argument was out of the range of valid values. Parameter name: index Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: index"

내 HTML 코드는 다음과 같습니다

<div class="scrolling-container"> 
    <br/> 

    <asp:GridView EnableSortingAndPagingCallbacks="true" ID="StationGridView" runat="server" 
     GridLines="None" CellSpacing="1" AlternatingRowStyle-Wrap="false" 
     Font-Names="tahoma" Font-Size="14px" CellPadding="3" 
     AllowSorting="True" 
     ViewStateMode="Disabled" EnableViewState="false" 
     AllowPaging="True" PageSize="15" dir="rtl" Width="100%" 
     OnRowDataBound="StationGridView_RowDataBound"> 

     <HeaderStyle BackColor="#d7effd" Font-Bold="true" ForeColor="Navy" Font-Size="12px" Font-Underline="false" /> 

     <FooterStyle BackColor="#d7effd" Font-Bold="true" ForeColor="Navy" 
      VerticalAlign="Middle" HorizontalAlign="Center" Font-Size="16px" /> 

     <AlternatingRowStyle BackColor="#c0c0c0" ForeColor="#000000" Height="25px" /> 

    </asp:GridView> 
</div> 

내 소스 코드는 다음과 같습니다

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (Page.IsPostBack == false) 
    { 
     Initialize(); 
    } 

    //Load data 

     PortalDataSetTableAdapters.VW_StationTableAdapter stationsAdapter = new PortalDataSetTableAdapters.VW_StationTableAdapter(); 
     PortalDataSet.VW_StationDataTable Station; 
     Station = stationsAdapter.GetData(); 


     StationGridView.DataSource = Station; 
     StationGridView.AutoGenerateColumns = true; 

     StationGridView.DataBind(); 
    } 
} 


protected void StationGridView_RowDataBound(object sender, GridViewRowEventArgs e) 
{     
     if (e.Row.RowType == DataControlRowType.Header) 
     { 
      e.Row.Cells[0].Text = "a"; 
      e.Row.Cells[1].Text = "b"; 
      e.Row.Cells[2].Text = "c"; 
      . 
      . 
      e.Row.Cells[42].Text = "x"; 
      e.Row.Cells[43].Text = "x"; 
      e.Row.Cells[44].Text = "x"; 
     } 
} 

마비 어쩌면 세포가 42 번 이상 (정확히 e.Row.Cells[42].Text = "x"; 라인에 있음) 오류가 발생합니다. 왜 이런 일이 발생합니까?

+0

그 행에 42 개의 셀만 있기 때문에 (41 + 0 행, 42가됩니까?)? 그 행에 42 개 이상의 세포가 있다고 생각하는 이유는 무엇입니까? – Draken

답변

0

당신이 행 억이없는 경우, 열은 계산 문제 (출처 : http://forums.asp.net/post/3380845.aspx) 여기에없는

당신은 확실히에만 42 열이, 당신은 43 회에 도달하려고 할 때, 당신 ArugmentOutOfRangeException를 취득합니다.

+0

내 쿼리는 1000 개가 넘는 레코드를 가지고 있지만 그리드보기의 레코드 수를 가져올 때 42입니다. 이유는 무엇입니까? 내 모델 (app_code 폴더의 mydataset.xsd 파일)에서 내 쿼리를 실행하더라도 완전한 데이터를 반환합니다. –

+0

이제 문제는 행의 개수입니까? (레코드 = 행?) 나는 당신을 도울 줄 모르겠다, 미안 해요. –