2010-03-13 3 views
0

Итак, у меня есть 2 списка, один из которых подключен к базе данных, а другой нет.Перенос данных из одного списка в другой C#

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

Ive написал этот код

listBox2.Items.Add(listBox1.SelectedItem); 

Но вместо того, чтобы copyin деталь я получаю "

System.Data.DataRowView 

Любой Хавин какие-либо советы?

ответ

0

Я не рядом с моим VS установить, чтобы проверить библиотека .NET, но я бы рискнул предположить, что вам нужен дополнительный атрибут для получения значения, например listBox1.SelectedItem.Value.

0

Можете ли вы показать код первой и второй декларации lsibox? Другие элементы управления имеют такие свойства, как DisplayName и ValueName, - в каком столбце из datarow будет отображаться в списке и что будет рассматриваться как значение. В вашем случае проблема заключается в том, что второй lisbox не знает, какой столбец должен отображаться в нем.

Обновленный: Когда listBox2.Items.Add(listBox1.SelectedItem) выполняет фактически первоначальную последовательность данных (который пришел из БД) копируется во второй ListBox. Если вы хотите, чтобы другой список не привязывался к значениям, полученным из БД, вам нужно создать их копию перед тем, как поместить во второй список.

+0

я не имею никакого кода объявляющий ListBox его все сделано через gui , но элемент отображения является .title для 1-го списка. не сделал это для второго, потому что я не хочу, чтобы он был связан с базой данных – Jenny

+0

@Jenny: см. обновленный ответ –

0

Я сделал простую программу:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged); 
     listBox1.Items.Add("1"); 
     listBox1.Items.Add("2"); 
     listBox1.Items.Add("3"); 
    } 

    void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     listBox2.Items.Add(listBox1.SelectedItem); 
    } 
} 

и работает без проблем. Поэтому я думаю, что ваша программа не работает, потому что тип ваших элементов - System.Data.DataRowView и не может быть преобразован в строку.

0
private void CopySelItems(ListBox from, ListBox to) 
    { 
     for (int i = 0; i < from.SelectedItems.Count; i++) 
     { 
      to.Items.Add(from.SelectedItems[i].ToString()); 
     } 


    } 
0

это самый простой способ загрузки ListBox в другой коробке списка и в то же время удалить данные из Sorce ListBox

int mCount = ListBox1.Items.Count; 
for (int i = 0; i <= mCount - 1; i++) 
{ 
    if (ListBox1.Items[i] == ListBox1.SelectedItem) 
    { 
     ListBox2.Items.Add(ListBox1.SelectedItem); 
     ListBox1.Items.Remove(ListBox1.SelectedItem); 
     mCount=mCount - 1; 
     i=i - 1; 
    } 
} 
Смежные вопросы