2016-10-29 2 views
2

Je fais un simple panier. qui ajoute le produit à la page du panier d'achat à partir d'un bouton qui se trouve à une autre page mon bouton ajouter au panier est comme suitIndexOutOfRangeException lorsque le bouton est cliqué

protected void addCart_Click(object sender, EventArgs e) 
     { 
      if (Session["mySC"] == null) 
      { 
       mySC = new CartClass(); 
       Session["mySC"] = mySC; 

      } 

      string ID = Request.QueryString["ID"]; 
      mySC = (CartClass)Session["mySC"]; 
      DataTable dt = DA.selectQuery("Select * from Trees where ID='"+ID+"'"); 
      DataRow row = dt.Rows[0]; 
       mySC.insert(new cartItems(Int32.Parse(ID), 
        row["TreeName"].ToString(), 
        row["Image"].ToString(), 
        Double.Parse(row["PricePerCube"].ToString()), 1)); 


     } 
    } 

lorsque ce bouton est cliqué l'erreur suivante apparaît

Une exception de type System.IndexOutOfRangeException a eu lieu dans System.Data.dll mais n'a pas été traitée dans le code utilisateur

informations complémentaires: Il n'y a pas de ligne à la position 0.

toute aide serait appréciée

+1

** Alerte d'injection SQL ** N'utilisez pas la concaténation de chaîne pour créer des requêtes SQL. Surtout, quand vous lisez directement 'QueryString [" ID "]'. –

Répondre

0
DataRow row = dt.Rows[0]; 

Lance une exception si aucune ligne n'est renvoyée. Ajoutez une condition if avant cela

If (dt.Rows.Count > 0){ 

DataRow row = dt.Rows[0]; 
      mySC.insert(new cartItems(Int32.Parse(ID), 
       row["TreeName"].ToString(), 
       row["Image"].ToString(), 
        Double.Parse(row["PricePerCube"].ToString()), 1)); 



} 
+0

le bouton ne donne plus d'erreur mais quand je clique sur ma page de panier pour vérifier si l'article est ajouté ou non il me donne cette erreur Une exception de type 'System.InvalidOperationException' s'est produite dans System.Web.dll mais a été non traité dans le code utilisateur Informations supplémentaires: DataSource et DataSourceID sont définis sur 'gv'. Supprimer une définition gv est le gridview que les données doivent être ajoutées à .. – billz

+0

S'il vous plaît montrer votre code. Ajoutez gv.DataSourceId = null; avant de définir la source de données – Hadi

+0

dans ma réponse à la question – billz