2015-02-05 2 views
0

я хочу, чтобы добавить выбранный элемент из данных ограничен ListBox (listbox1) на другой ListBox (listbox2)Добавить выбранный элемент из связанного ListBox к несвязанной ListBox

Вот код на событии нажатия кнопки.

private void btnrgt_Click(object sender, EventArgs e) 
{ 
    string x = listBox1.SelectedItem.ToString(); 
    listBox2.Items.Add(x.ToString()); 
    txttestno.Text = listBox2.Items.Count.ToString(); 
} 

Когда я запускаю этот код, System.data.datarowview отображается в спискеbox2.

Просьба помочь. благодарю вас заранее.

+0

Он по-прежнему показывает System.data.datarowview во втором списке –

ответ

0

При связывании ListBox источник данных к DataTable каждый элемент внутри ListBox является DataRowView, не простая строка. В ListBox вы видите строку, отображаемую, поскольку вы устанавливаете свойство DisplayMember списка ListBox с именем столбца в этом DataRowView.

Итак, взятие текущего SelectedItem не возвращает строку, но DataRowView и вызов ToString() для DataRowView возвращает полное квалифицированное имя класса (System.Data.DataRowView).

Вам нужно что-то вроде этого

private void btnrgt_Click(object sender, EventArgs e) 
{ 
    DataRowView x = listBox1.SelectedItem as DataRowView; 
    if (x != null) 
    { 
      listBox2.Items.Add(x["NameOfTheColumnDisplayed"].ToString()); 
      txttestno.Text = listBox2.Items.Count.ToString(); 
    } 
} 

EDIT
Это не ясно, что является источником ошибки, указанной в свой комментарий ниже, однако вы можете попробовать, чтобы избежать добавления элемента из первого ListBox ко второму, если этот элемент существует во второй ListBox с кодом, как это

private void btnrgt_Click(object sender, EventArgs e) 
{ 
    DataRowView x = listBox1.SelectedItem as DataRowView; 
    if (x != null) 
    { 
      string source = x"NameOfTheColumnDisplayed".ToString(); 
      if(!listbox2.Items.Cast<string>().Any(x => x == source)) 
      { 
       listbox2.Items.Add(source); 
       txttestno.Text = listBox2.Items.Count.ToString(); 
      } 
    } 
} 

это решение работает, если ваш второй ListBox действительно населенная добавляя простые строки в свою коллекцию Items.

+0

Столбец 'Testname' ограничен уникальным. Значение «Hameoglobin Test» уже присутствует. Он показывает это исключение, если я пытаюсь добавить несколько элементов во второй список и их нет ограничений –

+0

Второй список привязан к DataTable? – Steve

+0

Нет, он не ограничен какой-либо таблицей данных. –

0

При нажатии кнопки используйте код ниже.

protected void btnGo_Click(object sender,EventArgs e) { 
    string x = ListBox1.SelectedItem.Text; 
    ListBox2.Items.Add(x); 
} 
+0

string x = ListBox1.SelectedItem.Text; .Text с указанием ошибки –

+0

plz Сообщить об ошибке. have u try: string x = ListBox1.SelectedItem.Text.ToString()? – Patel

+0

Он по-прежнему показывает System.data.datarowview во втором списке –