2015-05-21 78 views
0

我嘗試使用querystring url在我的sql server數據庫的產品表中顯示產品詳細信息,url工作正常,並且能夠顯示用戶點擊的產品id,例如ProductDetails.aspx ?ID = 1,ProductDetails.aspx?ID = 2等使用asp.net和sql server顯示產品詳細信息

但無論傳遞的url,productdetails.aspx總是顯示我的數據庫中的第一個產品ID。

我使用的是listview顯示產品列表,formview顯示產品詳細信息和ObjectDataSource綁定數據庫中的數據。

<a href='ProductDetails.aspx?ID=<%# Eval("ID") %>'> 
    <span><b><%# Eval("Judul") %></b> 
    </span><br> 
</a> 
+0

應該有你的ProductDetails.aspx.cs的處理該URL解析Page_Load事件代碼。你可以發佈嗎? – StingyJack

+0

我在我的page_load事件中有這段代碼Context.RewritePath(Path.GetFileName(Request.RawUrl)); – Agustyan

+0

請更新您的問題的詳細信息,但問題是你沒有對查詢字符串值做任何事情。理想情況下,您將從查詢字符串獲取ID,檢索該ID的記錄,然後重新綁定網格/表格。 – StingyJack

回答

-1

使用<asp:Hyperlink>服務器標籤,而不是<a>標籤嘗試。 並在頁面上使用Request.QueryString["ID"]來檢索值產品ID

+0

例如: SqlCommand sql = new SqlCommand(「SELECT * FROM tablename WHERE ProductID = @ ProductID」,con1); SqlCommand.Parameters.AddWithValue(「@ ProductID」,Request.QueryString [「ProductID」]。ToString()); –

+0

它顯示相同的結果,但將參數查詢工作良好的想法 – Agustyan

0

感謝您的回答,開始時我沒有任何線索如何解決此問題。由於stingyJack建議我執行以下步驟來爲我的formview綁定數據,並突然使用。

  1. 在用於將數據綁定方法ProductDetailAccess.cs使用參數 「@ID」 更改查詢的ObjectDataSource
 namespace ProductDetail.App_Code 
    { 
     public class ProductDetail 
     { 
      public int ID { get; set; } 
      public string Title { get; set; } 
      public string Writer { get; set; } 
      public int Publish { get; set; } 
      public int Publisher_ID { get; set; } 
      public int Category_ID { get; set; } 
      public int Status_ID { get; set; } 
      public string Book_Image_Url { get; set; } 
      public int Jumlah { get; set; } 
      public string Deskripsi { get; set; } 
     } 

     public class ProductDetailAccess 
     { 
      public static List<ProductDetail> GetAllProduct(int ID) 
      { 
       List<ProductDetail> ProductList= new List<ProductDetail>(); 

       string cs = ConfigurationManager.ConnectionStrings["cs_productSample"].ConnectionString; 
       using (SqlConnection con = new SqlConnection(cs)) 
       { 
        SqlCommand cmd = new SqlCommand("Select * from T_Product where ID = @ID", con); 
        SqlParameter param = new SqlParameter("@ID", ID); 
        cmd.Parameters.Add(param); 
        con.Open(); 
        SqlDataReader rdr = cmd.ExecuteReader(); 

        while (rdr.Read()) 
        { 
         ProductDetail ProductDetail = new ProductDetail(); 
         ProductDetail.ID = Convert.ToInt32(rdr["ID"]); 
         ProductDetail.Title = rdr["Title"].ToString(); 
         ProductDetail.Writer = rdr["Writer"].ToString(); 
         ProductDetail.Publish = Convert.ToInt32(rdr["Publish"]); 
         ProductDetail.Publisher_ID = Convert.ToInt32(rdr["ID_Penerbit"]); 
         ProductDetail.Category_ID = Convert.ToInt32(rdr["Category_ID"]); 
         ProductDetail.Status_ID = Convert.ToInt32(rdr["Status_ID"]); 
         ProductDetail.Book_Image_Url = rdr["Book_Image_Url"].ToString(); 
         ProductDetail.Jumlah = Convert.ToInt32(rdr["Jumlah"]); 
         ProductDetail.Deskripsi = rdr["Deskripsi"].ToString(); 

         ProductList.Add(ProductDetail); 
        } 
       } 
       return ProductList; 
      } 
     } 
    } 
  • 我添加Page_Load事件中的此代碼
  •  protected void Page_Load(object sender, EventArgs e) 
        { 
         string queryString = Request.QueryString["ID"]; 
         ObjectDataSourceDetailBuku.SelectParameters.Add("ID",queryString); 
         ObjectDataSourceDetailBuku.DataBind();     
        } 
    

    也許有另一種方式來做到這一點,請寫出你的答案

    感謝

    相關問題