【问题标题】:Display product detail using asp.net and sql server使用 asp.net 和 sql server 显示产品详细信息
【发布时间】:2015-05-21 15:46:07
【问题描述】:

我尝试使用查询字符串 url 从我的 sql 服务器数据库中的产品表中显示产品详细信息,该 url 工作正常并且能够显示用户单击的产品 ID,例如 ProductDetails.aspx?ID=1, ProductDetails.aspx?ID =2等。

但无论传递的 url 是什么,productdetails.aspx 总是显示我数据库中的第一个产品 ID。

我使用 listview 显示产品列表,使用 formview 显示产品详细信息,使用 ObjectDataSource 绑定数据库中的数据。

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

【问题讨论】:

  • 在您的 ProductDetails.aspx.cs 的 page_load 事件中应该有处理 URL 解析的代码。可以发一下吗?
  • 我的 page_load 事件中有这段代码 Context.RewritePath(Path.GetFileName(Request.RawUrl));
  • 请使用该详细信息更新您的问题,但问题是您没有对查询字符串值做任何事情。理想情况下,您将从查询字符串中获取 ID,检索该 ID 的记录,然后重新绑定网格/表格。
  • 请使用 page_load 代码更新您的问题
  • 这是生成链接的代码。请包含 ProductDetails.aspx 和/或 ProductDetails.aspx.cs 中的代码

标签: c# asp.net sql-server formview


【解决方案1】:

感谢大家的回答,一开始我不知道如何解决这个问题。正如 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;
             }
         }
     }
  1. 我在 Page_Load 事件中添加此代码
     protected void Page_Load(object sender, EventArgs e)
     {
        string queryString = Request.QueryString["ID"];
        ObjectDataSourceDetailBuku.SelectParameters.Add("ID",queryString);
        ObjectDataSourceDetailBuku.DataBind();                
     }

也许还有其他方法可以做到这一点,请写下你的答案

谢谢

【讨论】:

    【解决方案2】:

    尝试使用&lt;asp:Hyperlink&gt; 服务器标签而不是&lt;a&gt; 标签。 并在PoductDetails.aspx 页面上使用Request.QueryString["ID"] 检索值ProductID

    【讨论】:

    • 例如:SqlCommand sql = new SqlCommand("SELECT * FROM tablename WHERE ProductID=@ProductID",con1); SqlCommand.Parameters.AddWithValue("@ProductID",Request.QueryString["ProductID"].ToString());
    • 它显示了相同的结果,但是放置参数查询的想法很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多