2016-01-02 26 views
3

如何綁定產品名稱,然後在標籤結果中獲取產品ID和價格?這三個屬性來自DB中的同一個表。如何放置兩個DataValueFields?

代碼:

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() ; 

} 
+0

讀取器是一個枚舉對象。您必須使用Read()方法來獲取可枚舉對象的每一行。使用SqlDataAdapter並將結果放入DataTable中更好。然後將您的控件綁定到DataTable。 – jdweng

+1

做一個大忙,並使用ORM(如實體框架)從數據庫中獲取*對象*。這會讓你的生活更輕鬆。您可以將一系列'Product'對象綁定到DDL並使用SelectedItem。 –

回答

0
 
I find the following errors: 

1- cast number filed to nvarchar in sql query 
2- set AutoPostBack property of listbox to true 
3- use ddlProduct.SelectedItem.Value for label2 

我創建了一個頁面,並使用你的代碼,並應用上面的建議,下面的代碼工作完美。

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; 
} 

}