2014-09-28 2 views
-2

У меня есть таблица базы данных с двумя полями кода и таблицы имен продуктов, которые имеют следующие данные.Многоколоночный список DropDown в asp.net C#

code 10 productName Sugar,code 20 productName rice,code 30 productName milk 

У меня есть страница asp.net с DropDownList. Я хочу, чтобы получить все данные в DropDownList вот мой код

if (!IsPostBack) 
{ 
    using (SqlDataAdapter adapter = new SqlDataAdapter("select distinct ProductName,code from item", db.con)) 
    { 
     DataTable datatable = new DataTable(); 
     adapter.Fill(datatable); 

     // EditableDropDownList2.DataSource = datatable; 

     List<ListItem> list = new List<ListItem>(); 

     foreach (DataRow dr in datatable.Rows) 
     { 
      string descr = string.Format("{0}|{1}", dr[0].ToString(), dr[1].ToString()); 
      list.Add(new ListItem(descr)); 

     } 

     list = list.OrderBy(a => a.Text).ToList(); 
     DropDownList2.DataSource = list; 

     DropDownList2.DataBind(); 
} 

Этот код работает отлично, чтобы отобразить все ProductName и кода в DropDownList теперь, что я хочу, когда я выбираю любой продукт в DropDownList .. только код продукта выберите в DropDownList и ProductName показывают в текстовом поле, я знал, что я пропускаю что-то событие SelectedIndex. Пожалуйста, помогите мне, как этого достичь.

+0

посмотрите на ответ, который я дал здесь http://stackoverflow.com/questions/25745204/aspdropdownlist-selectedvalues-in-multiple-selection-list/25746734#25746734, если это то, что вы не сможете его разработать на ваш код. – FeliceM

ответ

0

Если у вас есть раскрывающийся список, обратите внимание, что я добавил выбранные индексы и автоповтор (это необходимо, потому что, если вы что-то изменили, он должен выполнить обратную передачу и в выбранном событии с измененным индексом вы сможете захватить это).

<asp:DropDownList ID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged" AutoPostBack="true"/> 

В коде позади вы можете написать это.

protected void ddl_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string selectedProductName = ddl.SelectedValue.Split('|')[0]; 
     } 

Поскольку вы являются обязательными в виде простого текста в ListItem с форматом «именем | ID», вы должны получить выбранное значение, как указано выше.

Предложение - вы должны связываться как textfield = name и valuefield как ID.

foreach (DataRow dr in datatable.Rows) 
      { 

       list.Add(new ListItem(dr[0].ToString(), dr[1].ToString())); 

      } 

Так что, если вы будете следовать этому пути, вам просто нужно, чтобы получить выбранное название продукта, как «ddl.SelectedItem.Text».

+0

arindam ваш код только показывать выбранное ProductName как сахар, но я хочу, когда я выбираю продукт Sugar then dropdownlist = 10, но он показывает Sugar | 10 –

+0

@nomiikon, у вас есть 2 dropdownlists? Я думал, что у вас есть один раскрывающийся список, и там, когда вы выбираете сахар | 10, вам нужно показать в текстовом поле = Сахар. Пожалуйста, очистите путаницу. –

+0

У меня есть только один выпадающий список, а один из них - это сахарный сахар 10, когда я выбираю сахар 10, затем текстовое поле = сахар и выпадающий список показывают 10 (только код), не похожий на этот сахар | 10 –

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