如下代码:
for(int i = 0;i<this.listBox2.SelectedItems.Count;i++)
{
    this.listBox1.Items.Add(this.listBox2.SelectedItems[i].ToString());
}
为何this.listBox2.SelectedItems[i].ToString()总是输出为"System.Data.DataRowView",而不是所选的显示项?我的listBox2的显示项是从数据库中得到的。万分感谢!

解决方案 »

  1.   

    DataRowView的ToString()返回的就是"System.Data.DataRowView";
    如果要显示其中的值那就要不能用默认的ToString()方法了.
      

  2.   

    this.listBox1.Items.Add(this.listBox2.SelectedItems[i].Text);或Value
      

  3.   

    SelectedItems[i]的类型就是DataRowView,ToString()当然返回DataRowView;
    取选项值用this.listBox2.SelectedItems[i].Text
      

  4.   

    this.listBox1.Items.Add(this.listBox2.SelectedItems[i].value.ToString());
      

  5.   

    SelectedItems[i]的类型就是DataRowView,ToString()当然返回DataRowView;
    取选项值用this.listBox2.SelectedItems[i].Text
      

  6.   

    SelectedItems[i]的类型就是DataRowView,ToString()当然返回DataRowView;
    取选项值用this.listBox2.SelectedItems[i].Text
      

  7.   

    我刚去试了下,this.listBox2.SelectedItems[i].后无Text或Value定义,但试了其他普通listBox,这样this.listBox.SelectedItems[i].Text却是可以的,这跟选项值是从数据库中获得有关系吗?继续求助啊!!
      

  8.   

    this.listBox.SelectedItems[i].Text却是可以的
    --------------------
    不会吧,好像没有Text这样的属性...如果你在ListBox里想在每一个Item里存放两个值(Text,Value),那么你可以先定义一个类(或结构):
    class TextValue
    {
    public string Text;
    public object Value;
    public TextValue(string text, object value)
    {
    Text = text;
    Value = value;
    }
    public override string ToString()
    {
    return Text;
    }
    }
    然后把你从数据库里取出的值用TextValue来表示并添加入ListBox,比如:
    TextValue tv = new TextValue(dataTable.Rows[i]["名称"].ToString(), dataTable.Rows[i]["Value"])
    this.listBox1.Items.Add(tv);这样当取listbox的值的时候可以这样的来取:
    TextValue tv = (TextValue)this.listBox1.SelectedItems[i];
    //tv.Text;
    //tv.Value;
      

  9.   

    try ..            foreach (DataRowView  dv in this.listBox1.SelectedItems)
                {
                    listBox2.Items.Add(dv .Row["sname"].ToString ());
                }
      

  10.   

    oracle example: private void Form1_Load(object sender, EventArgs e)
            {
                DataBind();
            }
            private void DataBind()
            {
                OleDbConnection con = new OleDbConnection("Provider=OraOLEDB.Oracle.1;data source=oracle;user id=***;password=***");
                OleDbDataAdapter sda = new OleDbDataAdapter("select * from student", con);
                DataSet ds = new DataSet();
                sda.Fill(ds, "student");
                this.listBox1.DataSource = ds.Tables["student"];
                this.listBox1.DisplayMember = "sname";
            }        private void button1_Click(object sender, EventArgs e)
            {
                foreach (DataRowView  dv in this.listBox1.SelectedItems)
                {
                    listBox2.Items.Add(dv .Row["sname"].ToString ());
                }
            }
      

  11.   

    or try..
     private void button1_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
                {
                    this.listBox2.Items.Add(((System.Data.DataRowView)this.listBox1.SelectedItems[i]).Row["sname"].ToString());
                }
            }
      

  12.   

    先强制转成System.Data.DataRowView类型,然后取对应列的值即可..Good luck..