我有一个产品类
还定义了一个泛型集合
public List<ProductInfo> myproducts = new List<ProductInfo>();
我的窗体中this.dataGridView3.DataSource = mycollection.myproducts.ToArray();
那么我想要选择dataGridView3中的某一行对泛型里的数据进行更新和删除
不知道怎么做!

解决方案 »

  1.   

    直接this.dataGridView3.DataSource = myproducts;就可以了 不用再ToArray
    当然ProductInfo类要加入[Serializable]标识可序列化
      

  2.   

    object obj= dataGridView[dataGridView.CurrentCell.ColumnIndex][dataGridView.CurrentCell.RowIndex];
    dataGridView1.Rows[dataGridView1.CurrentRow.Index ].Cells["id"].Value
    查询获取实体对象
      

  3.   

    怎样根据选择dataGridView3的行来删除或更新泛型集合里的类
      

  4.   

    ProductInfo pi = (dataGridView3.DataSource as ProductInfo[])[dataGridView3.SelectedRows[0].Index];
    int index = myproducts.IndexOf(pi);//第index个
    元素就是pi
      

  5.   

    删除或更新泛型集合里的类,你这儿不涉及数据库么?只是在内存里处理?删除就是集合的remove一类的方法,更新就是直接赋值好了。你的关键还是如何得知到底选择的是哪行吧
      

  6.   

    楼上说的,运行了有错
    ProductInfo[]是null
      

  7.   

    不知道是用的ORM还是直接连接数据库。
    不好说吧
      

  8.   

    蛮奇怪的需求,如果没有数据库,你这些数据如何保存?在你更新和删除的时候肯定会回调的,回调后你刚才的那个myproducts 变量的值又没有了
      

  9.   

    myproducts这个是泛型集合
    我把数据都存进这里了
    最后在填到数据库里
      

  10.   

    看你实际的代码了。不知道你根据楼上各位总结的最后怎么写的。我的测试例子贴给你。我这里测试ok的。private void button1_Click(object sender, EventArgs e)
    {
        DataGridView d = new DataGridView();
        this.Controls.Add(d);
        List<aa> list = new List<aa>();
        list.Add(new aa("abc", 0));
        list.Add(new aa("def", 1));
        d.DataSource = list;
        d.Rows[0].Selected = true;
        aa obj = (d.DataSource as List<aa>)[d.SelectedRows[0].Index];
    }public class aa
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public aa()
        {
            Name = "aa";
            Age = 0;
        }
        public aa(string n, int a)
        {
            Name = n;
            Age = a;
        }
    }
      

  11.   

    这样的代码好像不能修改和更新吧,只是取得数据,在button1_Click里填充数据绑定数据又取得数据,这不是多此一举么?
      

  12.   

    楼上太强了!
    ProductInfo p = (this.dataGridView3.DataSource as List<ProductInfo>) [dataGridView3.SelectedRows[0].Index];
    这个能详细说明一下吗?