2015-05-21 84 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();     
        } 
    

    也许有另一种方式来做到这一点,请写出你的答案

    感谢

    相关问题