2011-08-31 1 views
-1

J'ai ces codes, le problème est, chaque fois que j'appuie sur le bouton de téléchargement, l'erreur mentionnée au titre apparaît, comment puis-je le résoudre? Voici mes codes: fichier ASPX (je na pas mis quoi que ce soit dans le GridView, sauf pour l'ID qui était myGridView):
L'exception hors de l'index n'a pas été gérée par l'erreur utilisateur?

<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> 

et voici ma page .cs:

 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(); 

Aidez s'il vous plaît? =/

+0

De quelle ligne de code l'erreur était-elle due? Et peut-être montrer plus de votre code. Je ne vois pas d'indexation dans ce que vous nous avez montré. –

+0

Exception -> Stack Trace -> Numéro de ligne précis du problème. Cependant, vous êtes, pour une raison ou une autre, en train d'intercepter l'exception et de ne montrer que le message d'exception. Si vous recevez une * exception *, cela signifie que vous avez une * erreur de programme * et que vous devez corriger votre code. Cela signifie que vous ne devriez pas * attraper l'exception; Au lieu de cela, laissez-le bouillonner. Ensuite, vous obtenez le message ** et ** la trace de la pile, et vous serez capable de corriger l'erreur vous-même presque instantanément. –

+0

(Si vous pensez que vous pouvez fournir plus de contexte lors de la gestion de l'exception (ie 'strFileNameOnServer') alors lancez une ** nouvelle ** exception et passez' ex' comme deuxième argument: 'innerException'.) –

Répondre

0

Je suppose que c'est dans la partie où vous indexez dans le tableau de colonnes? Avez-vous autant de colonnes?

+0

Je viens d'ajouter dans le GridView et nommé l'ID à myGridview, à part ça, les colonnes sont générées automatiquement à la page ASPX. Dans le fichier csv que je télécharge, il y a 9 colonnes bien que – user917145

+1

theres neuf colonnes mais vous accédez à 10, 'columns [9]' serait la dixième colonne depuis sa base zéro. mettez ceci dans une variable et vérifiez 'File.ReadAllLines (Server.MapPath (" ~/Uploads ")). Sélectionnez (line => line.Split (','))' – kmcc049

Questions connexes