DataGridView数据源为空记录集时以及SelectionChanged事件的处理方法
我在做的一个窗体,分为快捷工具栏、编辑区、数据表三个部分,编辑区由TextBox等控件组成,进行数据的新增和编辑操作,数据表由一个DataGridView控件组成,用来显示数据源中的数据。目前,单击工具栏中的“编辑”按钮,则编辑区中的TextBox控件中显示DataGridView控件中选中行的数据以供修改,单击“保存”按钮后,保存修改后的数据,大部分功能已经实现。
      目前,还有以下问题有待解决:
      一、当DataGridView数据源为空记录集时,即下面的iniDgvParts()事件中,ds1.Tables[0]中没有一行数据时,单击“编辑”时,会提示“
未将对象引用设置到对象的实例”错误,代码中红色部分为提示错误的地方;
      下为代码:
      \\单击“编辑”按钮触发事件
      private void tbEdit_Click(object sender, EventArgs e)
         {
             iniDgvParts();
             if (dgvParts == null)
             {
                 MessageBox.Show("数据源为空!");
                 return;
             }
             else
             {  
                 partId1 = dgvParts.CurrentRow.Cells[0].Value.ToString();
                 if (partId1 == "" || partId1 == null)
                 {
                     MessageBox.Show("请选择要编辑的数据行!");
                     return;
                 }
                 else
                 {  
                     strSql1 = "select * from parts where partId="+ Convert.ToInt32(partId1)+"";
                     database.getSqlCmd(strSql1);
                     txtPartCode.Text = dgvParts.CurrentRow.Cells[1].Value.ToString();
                     txtPartName.Text = dgvParts.CurrentRow.Cells[2].Value.ToString();
                     rtxtRemark.Text = dgvParts.CurrentRow.Cells[6].Value.ToString();
                 }             
             }
             tbSave.Enabled = true;
         }
         //DataGriVIew控件加载数据源,dgvParts为DataGridView控件
         private void iniDgvParts()
         {
            strSql1 = "select a.partId as 序号,a.partCode as 代码,a.partName as 名称, b.styleCategoryName as 款式类型,a.maintainDate as 维护日期,a.maintainMan as 维护人,a.remark as 备注 from parts a join clothStyleCategory b on b.styleCategoryId=a.clothStyleCategoryId ";
                 DataSet ds1 = operateData.getDs(strSql1, "tb1");
                 dgvParts.DataSource = ds1.Tables[0];
                 dgvParts.Columns[0].Visible = false;
             }
             else
             {
                 return;
             }
         }
     二、我想实现单击DataGridView控件中的某行记录,即在编辑区中显示相应的数据,该如何实现?我用了DataGridView控件的SelectionChanged事件和CellClick事件,没有实现成功。
     以上问题,请大家帮忙看一下!谢谢!
------解决方案--------------------1、    
if (dgvParts == null)
 {
 MessageBox.Show("数据源为空!");
 return;
 }
这个改成if (.Rows.Count == 0)
2、datagridview的SelectionMode改成FullROwSelect就可以使用SelectionChanged做事了
------解决方案--------------------C# code
//获取当前单元格所在的行
dataGridView1.CurrentCell.OwningRow
dataGridView1.CurrentRow