【问题标题】:How to Put two DataValueFields?如何放置两个 DataValueFields?
【发布时间】:2016-01-02 16:57:41
【问题描述】:

如何绑定产品名称,然后在标签结果中获取产品 ID 和价格?这三个属性来自 DB 中的同一张表。

代码:

public partial class CreateOrder : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false) bindListBox();
    }
}

private void bindListBox()
{
    ddlProduct.DataSource     = getReader();
    ddlProduct.DataTextField  = "productName";
    ddlProduct.DataValueField = "IDANDPRICE"; 

    ddlProduct.DataBind();
}

private SqlDataReader getReader()
{
    //get connection string from web.config
    string strConnectionString =
        ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection myConnect = new SqlConnection(strConnectionString);

    string strCommandText = "SELECT productName, productID,productPrice,(productID + '-' +  productPrice) AS IDANDPRICE from Product";
    SqlCommand cmd = new SqlCommand(strCommandText, myConnect);

    myConnect.Open();

    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    return reader;
}

protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
    Label1.Text = "";
    Label1.Text += "productName:" + ddlProduct.SelectedItem.Text + "<br/>";

    Label2.Text = "";
    Label2.Text += "IDANDPRICE:" + ddlProduct.SelectedItem.ToString() ;

}

【问题讨论】:

  • 阅读器是一个可枚举的对象。您必须使用 Read() 方法来获取可枚举对象的每一行。在您的情况下,最好使用 SqlDataAdapter 并将结果放入 DataTable。然后将控件绑定到 DataTable。
  • 帮自己一个大忙,使用 ORM(如实体框架)从数据库中获取 objects。这使您的生活更加轻松。您可以将Product 对象的集合绑定到 DDL 并使用 SelectedItem。

标签: c# linq


【解决方案1】:
我发现以下错误: 1- 在 sql 查询中将数字转换为 nvarchar 2-将列表框的 AutoPostBack 属性设置为 true 3-对 label2 使用 ddlProduct.SelectedItem.Value

我创建一个页面并使用您的代码并应用上述建议,以下代码完美运行。

public partial class _Default : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack == false) bindListBox();
}

private void bindListBox()
{
    ddlProduct.DataSource = getReader();
    ddlProduct.DataTextField = "name";
    ddlProduct.DataValueField = "IdAndName";

    ddlProduct.DataBind();
}

private SqlDataReader getReader()
{
    //get connection string from web.config
    string strConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection myConnect = new SqlConnection(strConnectionString);

    string strCommandText = "SELECT Id,Name,CAST( id as nvarchar(10) )+'-'+Name as IdAndName  FROM  Product";
    SqlCommand cmd = new SqlCommand(strCommandText, myConnect);

    myConnect.Open();

    SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    return reader;
}

protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)
{
    Label1.Text = "";
    Label1.Text += "productName:" + ddlProduct.SelectedItem.Text + "<br/>";

    Label2.Text = "";
    Label2.Text += "IDANDPRICE:" + ddlProduct.SelectedItem.Value;
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多