2013-07-01 2 views
0

Когда пользователь выбирает идентификатор заказа, остальная информация о заказе отображается на этикетке (этикетках). Отобразите следующее: идентификатор сотрудника, дату заказа, фрахт, отправленное имя и страну. Эта функциональность должна быть реализована с помощью прямого доступа к данным программно.Связывание значений выпадающего списка с текстовым полем

Редактировать: пример кода и дополнительные пояснения.

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

То, что я хочу, другие поля, которые есть в таблице заказов, которые будут отображаться при выборе значения в DropDownList.

+3

Вы еще что-нибудь пробовали? Это читается как скопированный и вставленный вопрос из задания? – tymeJV

+1

это звучит как требование, а не вопрос :) – mckeejm

+0

с использованием базы данных Я заполнил значения из базы данных в раскрывающемся списке .. Что я хочу знать, так это отображать поля этого выбранного значения в метке – user2540165

ответ

0

Можете ли вы сделать данные из результата SQL Query, а затем добавить элементы в раскрывающийся список из столбца ID. Когда вы выбираете элемент из DDL, вы показываете информацию, где строка из datatable соответствует выбранному идентификатору 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

«Объект» не содержит определения для «toString» и никакого метода расширения 'toString «можно принять первый аргумент типа« объект »(вам не хватает директивы использования или ссылки на сборку?) \t ... как удалить эту ошибку – user2540165

+0

Практически каждый может использовать метод toString(). Вы видите, какой объект получает сообщение? Я думаю, что визуальная студия дает вам исправление в кодировке. –

0

Как вы маркированы ваш вопрос ASP.Net, я предполагаю, что это часть приложения ASP.NET WebForms. Это означает, что выпадающий список будет находиться внутри веб-страницы в браузере. Мне не ясно, хотите ли вы, чтобы метка отображалась сразу, когда пользователь выбирает элемент или только после сообщения на сервер. В первом случае вам понадобится 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 («Идентификатор сотрудника: {0}, дата заказа: {1}, фрахт: {2}, отправленное имя: {3} и страна {4}."), Читатель ["employeeId "] .ToString(), reader [" orderDate "]. ToString(), reader [" freight "]. ToString(), reader [" shippedName "]. ToString(), reader [" country "]. ToString()); – user2540165

+1

Я вставлял этот код в свое событие SelectedIndex_Changed, но я сталкиваюсь с какой-то ошибкой в ​​этой строке ... например, перед началом чтения; ожидается – user2540165

+0

@ user2540165 в коде были некоторые опечатки. Я вставил его в VS.Net, и теперь он должен скомпилировать все. –

Смежные вопросы