2011-08-31 3 views
-1

나는이 코드를 가지고 있는데, 문제는 업로드 버튼을 누를 때마다 제목에 언급 된 오류가 나타납니다. 어떻게 해결할 수 있습니까? 여기 내 코드는 다음과 같습니다 영문 파일 (내가 myGridView이었다 ID를 제외한의 GridView에 아무것도 설정 didnt한다) :인덱스가 범위를 벗어남 예외가 사용자 errror에 의해 처리되지 않았습니다?

 string strFileNameOnServer = fileUpload.PostedFile.FileName; 
     string fileExt = 
     System.IO.Path.GetExtension(fileUpload.FileName); 
     //string appDataPath = HttpContext.Current.Server.MapPath("~/App_Data"); 



     if (fileUpload.PostedFile != null && fileExt == ".csv") 
     { 

      try 
      { 

       //fileUpload.PostedFile.SaveAs(ConfigurationManager.AppSettings + appDataPath + "\\" + strFileNameOnServer); 
       fileUpload.PostedFile.SaveAs(Server.MapPath("~/Uploads")); 
       //string appPath = HttpContext.Current.Request.ApplicationPath; 
       // string physicalPath = HttpContext.Current.Request.MapPath("~/MajorProject"); 
       Label1.Text = "File name: " + 
         fileUpload.PostedFile.FileName + "<br>" + 
         fileUpload.PostedFile.ContentLength + " kb<br>" + 
         "Content type: " + 
         fileUpload.PostedFile.ContentType; 
      } 
      catch (Exception ex) 
      { 
       Label1.Text = "Error saving <b>" + strFileNameOnServer + "</b><br>. " + ex.Message; 
      } 
      BtnImport1.Visible = true; 
      Cancel.Visible = true; 
      fileUpload.Visible = false; 
      btnUpload.Visible = false; 
     } 
     else 
     { 

      Label1.Text = "Error - a file name must be specified/only csv files are allowed"; 
      return; 

     } 


     var data = File.ReadAllLines(Server.MapPath("~/Uploads")) 
      .Select(line => line.Split(',')) 
      .Select(columns => new { GuestID = ErrorMessage(columns[0]), IC_No = ErrorMessage(columns[1]), Grouping = ErrorMessage(columns[2]), Remarks = ErrorMessage(columns[3]), GuestName = ErrorMessage(columns[4]), Class_Group = ErrorMessage(columns[5]), Staff = ErrorMessage(columns[6]), Attendance_Parents_Only = ErrorMessage(columns[7]), Registration = ErrorMessage(columns[8]), Event_ID = ErrorMessage(columns[9]) }); 




     myGridView.DataSource = data; 
     myGridView.DataBind(); 
: 여기

<p> 
<asp:Label ID="Label1" runat="server"></asp:Label> 
</p> 



<p> 
    <asp:Button ID="BtnImport1" runat="server" onclick="BtnImport1_Click" 
     Text="Import" /> 
    <asp:Button ID="Cancel" runat="server" onclick="Cancel_Click" 
     Text="Cancel Import" /> 
</p> 



<asp:GridView ID="myGridView" runat="server" CellPadding="4" 
    EnableModelValidation="True" ForeColor="#333333" GridLines="None" 
    Width="716px"> 
    <AlternatingRowStyle BackColor="White" /> 
    <Columns> 

    </Columns> 
    <EditRowStyle BackColor="#2461BF" /> 
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
    <RowStyle BackColor="#EFF3FB" /> 
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 

</asp:GridView> 

내 .cs 페이지입니다

도와주세요. =/

+0

오류가 발생한 코드 줄은 무엇입니까? 그리고 더 많은 코드를 보여줄 수도 있습니다. 나는 당신이 우리에게 보여준 것에 대한 색인 작업을 볼 수 없습니다. –

+0

예외 -> 스택 추적 -> 정확한 줄 수 문제. 그러나 어떤 이유로 예외를 포착하고 예외 메시지 만 표시합니다. * 예외가 생기면 * 프로그램 오류 *가 발생하고 코드를 수정해야 함을 의미합니다. 즉, 예외를 잡아서는 안됩니다. 대신 거품을 내 보자. 그런 다음 ** 및 ** 스택 추적 메시지를 받고 거의 즉시 오류를 수정할 수 있습니다. –

+0

(예외 (예 :'strFileNameOnServer')를 처리 할 때 더 많은 컨텍스트를 제공 할 수 있다고 생각한다면 ** new ** 예외를 던지고 두 번째 인수 인'innerException '을 전달하십시오.) –

답변

0

나는 열 배열에 색인을 붙이는 부분에서 그 부분을 추측하겠습니까? 당신은 많은 칼럼을 가지고 있습니까?

+0

방금 ​​추가 한 GridView 및 ID를 myGridview, 그 이외의 이름을 aspx 페이지에서 열이 자동으로 생성됩니다. 업로드하는 CSV 파일에는 – user917145

+1

9 개의 열이 있지만 10 열에 액세스 할 수 있습니다. 'columns [9]'는 0부터 시작하여 열 번째 열이됩니다. 이 줄을 varialbe에 넣고'File.ReadAllLines (Server.MapPath ("~/Uploads"))를 체크한다. Select (line => line.Split (','))' – kmcc049

관련 문제