【问题标题】:Insert integer when dropdownlist displays strings as datavaluefield当下拉列表将字符串显示为数据值字段时插入整数
【发布时间】:2012-01-28 06:04:11
【问题描述】:
  • 我正在 Visual Studio 2008 上开发我的应用程序
  • 我有 4 张桌子
  • 我有一个下拉列表(显示 product_category_names)
  • 我需要做一个插入语句
  • 我有以下代码:

    Dim sql2 As String = "INSERT INTO Product (product_category_id, product_name, product_title, product_desc, product_author, product_author_age, product_author_desc, product_other_detail, product_dimension1, product_dimension2, product_price, product_institution, product_status, product_delivery_time) VALUES (@product_category_id, @product_name, @ product_title、@product_desc、@product_author、@product_author_age、@product_author_desc、@product_other_detail、@product_dimension1、@product_dimension2、@product_price、@product_institution、@product_status、@product_delivery_time)"

cmd.Parameters.Add(New SqlParameter("@product_name", (txtProductName2.Text))) cmd.Parameters.Add(New SqlParameter("@product_title", (txtProductTitle2.Text)))

问题是,当下拉列表显示“product_category_names”而不是“product_category_id”时,如何将“product_category_id”(一个整数)插入到“Product”表中?

谁能给我看灯?谢谢。

【问题讨论】:

  • 是 Winforms、ASP.NET WebForms、ASP.NET MVC、WPF 还是什么?

标签: sql visual-studio-2008 drop-down-menu


【解决方案1】:

假设您在页面加载事件上绑定下拉列表并使用 product_Catogry 表,那么最简单的方法是将 product_category_ID 绑定到下拉列表的 value 属性。这样,您可以在用户看到名称时以编程方式访问 ID。

DropDownList.DataSource = [your product table]
DropDownList.DataTextField = "Proudct_Category_Name"
DropDownList.DataValueField = "Product_category_ID"

如果由于某种原因这不是一个选项,那么下面的 SQL 将在您当前的命令中运行,只需确保将 @Product_Category_Name 作为参数添加到 SqlCommand 而不是 @product_Category_Name。

INSERT INTO Product 
(       product_category_id, 
        product_name, 
        product_title, 
        product_desc, 
        product_author, 
        product_author_age, 
        product_author_desc, 
        product_other_detail, 
        product_dimension1, 
        product_dimension2, 
        product_price, 
        product_institution, 
        product_status, 
        product_delivery_time
)    
SELECT  product_category_id, 
        @product_name, 
        @product_title, 
        @product_desc, 
        @product_author, 
        @product_author_age, 
        @product_author_desc, 
        @product_other_detail, 
        @product_dimension1, 
        @product_dimension2, 
        @product_price, 
        @product_institution, 
        @product_status, 
        @product_delivery_time
FROM    product_category
WHERE   product_category_Name = @Product_Category_Name

或者您可以简单地将其添加到当前 SQL 的开头:

DECLARE  @Product_Category_ID INT
SELECT   @Product_Category_ID = Product_Category_ID
FROM     Product_Category
WHERE    Product_Category_Name = @Product_Category_Name

然后继续插入...值()。

【讨论】:

  • 如果您没有使用将下拉列表与 id 字段进行数据绑定的第一个选项,那么您需要使用:dim sql2 as "[the SQL I given in the answer]"。然后将正确的 SqlParameter 添加到命令中。 cmd.Parameters.Add(new SqlParameter("@Product_Category_Name", ddl.ProductCategoryName2.SelectedValue).
  • 嗨 GarethD,我发布了这个问题的更详细版本。请看一下您的方便,非常感谢。 stackoverflow.com/questions/9046445/…
猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
相关资源
最近更新 更多