2016-10-29 149 views
2

我正在製作一個簡單的購物車。這從一個按鈕,在另一頁中添加產品到購物車頁面如下IndexOutOfRangeException單擊按鈕

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


     } 
    } 

時被點擊此按鈕下面的錯誤彈出

類型的異常我添加到購物車按鈕System.IndexOutOfRangeException發生在System.Data.dll但在用戶代碼中沒有處理

中其他信息:在位置沒有行0

任何幫助,將不勝感激

+1

** SQL注入警報!**不要使用字符串連接來構建SQL查詢。特別是,當你直接閱讀'QueryString [「ID」]'。 –

回答

0
DataRow row = dt.Rows[0]; 

如果沒有行返回,會拋出異常。在它之前添加if條件

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

該按鈕不會給出錯誤,但當我點擊我的購物車頁面來檢查是否添加項目是否給我這個錯誤 在System.Web.dll中發生類型'System.InvalidOperationException'異常,但是未在用戶代碼中處理 附加信息:DataSource和DataSourceID均在'gv'上定義。刪除一個定義。 gv是數據必須添加到的網格視圖。 – billz

+0

請顯示您的代碼。添加gv.DataSourceId = null;然後在我的問題答案中定義數據源 – Hadi

+0

代碼 – billz