int name = dataGridView1.CurrentRow.Index + 1;
            DataRow row = dt.NewRow();            dt.Rows.InsertAt(row, name);我这样写,为什么添加的行都是在第二行加新行呢?我想做是在DATAGRIDVIEW的选中行的后面加一新行,是不是这个CURRENTROW.INDEX没有获取到当前的行号?如果用别的方法怎么写?

解决方案 »

  1.   

    别的方法,可以这样:
    int index = 0;
    if (this.dataGridView1.CurrentRow != null)
        index = this.dataGridView1.CurrentRow.Index + 1;
    object[] cellValues = new object[] {第1个单元格的值, 第2个单元格的值, ....};
    this.dataGridView1.Rows.Insert(index, cellValues);
      

  2.   

    搂主没有插入行成功的原因是,你仅仅在DataTable里面新增了行,并没有在DataGridView控件里面新增行
      

  3.   

    在dataGridView1的单击事件中添加            int name = this.dataGridView2.CurrentRow.Index;
                this.dataGridView2.Rows.Insert(name + 1, 1);
      

  4.   

    当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。
    用那个新方法不行呀?能否帮忙解决下我那是怎么问题嘛?
      

  5.   

    我那几句应该是能实现那功能吧? 可是断点调试时,CURRENTROW.INDEX的值确实是0,从来不变,怎么回事呢?
      

  6.   

    搂主要明白:DataGridView里面,当前行与选中行不一定一致的!
    搂主可能需要这样做:
    if(this.dataGridView1.SelectedRows.Count<=0)
        return;
    int index = this.dataGridView1.SelectedRows[0].Index + 1;
    DataRow row = dt.NewRow(); 
    dt.Rows.InsertAt(row, index); 应该可以了
      

  7.   


    怎么感觉你把代码写在别的事件里了吧。private void dataGridView1_Click(object sender, EventArgs e)
      

  8.   


    我是写在button1_click里了?写在这里是不是不行呢?
    我刚用SELECTROWS[0]那方法了还不行。。
      

  9.   

    显然不行撒,你现在是要用int name = dataGridView1.CurrentRow.Index + 1;
    获得当前选择的行。 是对dataGridView1的单击操作。button1_click里面怎么获得。
      

  10.   

    我是编程新手,许多东西还不明白。我在别的函数里用过DATAGRIDVIEW1.SELECTEDROWS.COUNT操作,以为这个会差不多呢。那如果我想在BUTTON点击事件里用那句话该怎么改呢?
      

  11.   

    把name定义form下的字段(变量)private void dataGridView1_Click(object sender, EventArgs e)事件里写
    name = dataGridView1.CurrentRow.Index + 1
    /***********            DataRow row = dt.NewRow();             dt.Rows.InsertAt(row, name); 
    写到button1_click事件