2013-07-01 100 views
0

当用户选择订单ID时,订单信息的其余部分将显示在标签中。显示以下内容:员工ID,订单日期,运费,装运名称和国家/地区。应该以编程方式使用直接数据访问来实现此功能。将下拉列表值绑定到文本框

编辑:代码示例和附加说明。

String CS = onfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ConnectionStr‌​ing; 
using (SqlConnection con = new SqlConnection(CS)) 
{ 
    SqlCommand cmd = new SqlCommand("SELECT OrderID FROM Orders", con); 
    con.Open(); 
    DropDownList1.DataSource = cmd.ExecuteReader(); 
    DropDownList1.DataTextField = "OrderID"; 
    DropDownList1.DataValueField = "OrderID"; 
    DropDownList1.DataBind(); 
    Label1.Text = Convert.ToString(DropDownList1.SelectedItem.Text); 
} 

我想要的是在下拉列表中选择一个值时,显示在订单表中的其他字段。

+3

你有没有尝试过任何东西呢?这看起来像来自任务的复制和粘贴问题? – tymeJV

+1

这听起来像一个要求,而不是一个问题:) – mckeejm

+0

使用数据库我已经填充从数据库的值到下拉列表..我想要知道的是显示在标签 – user2540165

回答

0

您可以从SQL查询结果中创建数据表,然后将项添加到ID列的dropdownlist中。当您从DDL中选择一个项目时,显示数据表中的行与选定的orderID匹配的信息。

我可以编写代码,如果你想不清楚我的意思。

UPDATE:用代码

var ds = new DataSet(); 

using (var conn = new SqlConnection(connection)) 
{ 
    conn.Open(); 
    var command = new SqlCommand("Your SQL Query", conn); 
    var adapter = new SqlDataAdapter(command); 
    adapter.Fill(ds); 
    conn.Close(); 
} //Now you have a dataset, with one table that matches your query result. 

//And now we can use a foreach loop to add every OrderID to dropdownlis 

foreach (DataTable table in ds.Tables) 
{ 
    foreach (DataRow dr in table.Rows) 
    { 
     DDLname.Items.Add(dr[0].ToString()); 
    } 
} 

//onSelectedValue event 
string orderID = DDLname.Text.toString(); 
Label1.Text = orderID; 
foreach (DataTable table in ds.Tables) 
{ 
    foreach (DataRow dr in table.Rows) 
    { 
     if(dr[0].toString().equals(orderID)) 
     { 
      Label2.text = dr[1].toString(); 
      Label3.text = dr[2].toString(); 
      etc.... 
     } 
    } 
} 
+0

您可以为其编写代码 – user2540165

+0

'object'不包含'toString'的定义并且没有扩展方法'toString '接受'对象'类型的第一个参数可以找到(你是否缺少使用指令或程序集引用?)\t ...如何删除此错误 – user2540165

+0

几乎所有的东西都可以使用toString()方法。你能看到什么东西得到消息吗?我认为visual studio给你一个codeline refrence。 –

0

当你标记与ASP.Net你的问题,我认为这是一个ASP.Net Web表单应用程序的一部分。这意味着下拉列表将位于浏览器中的网页内。我不清楚您是希望标签在用户选择该项目时立即显示,还是仅在发布到服务器后才显示。 在第一种情况下,您需要使用javascript,可能需要使用Ajax或JSON来获取要显示的选定项目的数据。在第二种情况下,您可以为下拉列表中的SelectedIndex_Changed事件添加事件处理程序。这个处理程序应该这样做:

string CS = ConfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     SqlCommand cmd = new SqlCommand("SELECT OrderID FROM Orders WHERE OrderId = @OrderId", con); 
     cmd.Parameters.AddWithValue("@OrderId", DropDownList1.SelectedItem.Value); 
     con.Open(); 
     if (reader.Read()) 
     { 
      SqlDataReader reader = cmd.ExecuteReader(); 
      Label1.Text = String.Format("Employee ID: {0}, order date: {1}, freight: {2}, shipped name: {3}, and country {4}." 
       , reader["employeeid"].ToString() 
       , reader["orderdate"].ToString() 
       , reader["freight"].ToString() 
       , reader["shipname"].ToString() 
       , reader["shipcountry"].ToString()); 
     } 
    } 
+0

Label1.Text = String.Format(“员工ID:{0},订单日期:{1},运费:{2},装运名称:{3}和国家/地区{4}。”),reader [“employeeId “).ToString(),reader [”orderDate“]。ToString(),reader [”freight“]。ToString(),reader [”shippedName“]。ToString(),reader [”country“]。ToString ); – user2540165

+1

我在我的SelectedIndex_Changed事件中粘贴了这段代码,但是我在这条线上面临着某种错误......就像读者开始之前一样;预计 – user2540165

+0

@ user2540165代码中有一些错字。我把它粘贴到VS.Net,现在它应该编译好。 –