2010-03-13 136 views
0

好吧,我有2个列表框,其中一个连接到另一个数据库。将数据从一个列表框传输到另一个列表框#

我希望能够将连接到数据库的列表框中的选定项目发送到不是。

香港专业教育学院写了这个代码但是

listBox2.Items.Add(listBox1.SelectedItem); 

代替COPYIN我得到“

System.Data.DataRowView 

任何人就吃什么建议的项目?

回答

0

我不靠近我的VS安装检查.NET库,但是我估计你需要一个更深的属性来获得这个值,比如listBox1.SelectedItem.Value

0

您可以显示第一个和第二个lsibox声明的代码吗?其他控件具有像DisplayName和ValueName这样的属性 - 从数据行中设置哪些列将显示在列表框中,以及哪些将被视为值。在你的情况下,问题是第二个lisbox不知道应该在哪个列中显示。

更新: 当listBox2.Items.Add(listBox1.SelectedItem)执行实际的原始数据行(这些来自DB)复制到第二个列表框。如果你想让另一个列表框没有连接到从数据库获得的值,你需要在放入第二个列表框之前创建它们的副本。

+0

我不删除的数据有任何代码声明列表框中所有通过做最简单的方法gui 但显示成员是第一个列表框的.title。没有做第二次,因为我不希望它链接到数据库 – Jenny 2010-03-13 15:23:19

+0

@珍妮:看到更新的答案 – 2010-03-13 15:37:43

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

这是一个列表框加载到另一个列表框,并在同一时间从SORCE列表框中

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; 
    } 
} 
相关问题