if (dataGrid1.CurrentRowIndex!=-1)
{
MessageBox.Show ("选中的行:" + dataGrid1.CurrentRowIndex);
da1.Tables["ryxx"].Rows[dataGrid1.CurrentRowIndex].Delete();
......
}
----------->>
if (dataGrid1.SelectedIndex = - 1)
{
MessageBox.Show ("选中的行:" + dataGrid1.SelectedIndex.ToString() );
da1.Tables["ryxx"].Rows[dataGrid1.SelectedIndex].Delete();
......
}CurrentRowIndex获取选定行的从零开始的索引。而且是循环遍历,当你删除一行后,要重新计算datagrid的总行数,再次定位。

解决方案 »

  1.   

    sorry:
    if (dataGrid1.SelectedIndex != - 1)
    {
    MessageBox.Show ("选中的行:" + dataGrid1.SelectedIndex.ToString() );
    da1.Tables["ryxx"].Rows[dataGrid1.SelectedIndex].Delete();
    ......
    }
      

  2.   

    dataGrid1.SelectedIndex不对吧,dataGrid1没有SelectedIndex属性啊
      

  3.   

    我说的是winform下的,不是web下的,谢谢
      

  4.   

    private void button4_Click(object sender, System.EventArgs e)
    {
    if(dataGrid1.CurrentRowIndex>=0)
    {
    DataTable table = da1.Tables["name"];
    dv = table.DefaultView;
    dv.Delete(dataGrid1.CurrentRowIndex);
    if(ds.HasChanges())
    {
    da.Update(ds,"Project_Expense");
    }
    ds.Tables["Project_Expense"].AcceptChanges();
    }
    else
    {
    MessageBox.Show("请选择一行数据");

    }
      

  5.   

    纠正一下,表格的名称打得前后不一样:
    private void button4_Click(object sender, System.EventArgs e)
    {
    if(dataGrid1.CurrentRowIndex>=0)
    {
    DataTable table = da1.Tables["name"];
    dv = table.DefaultView;
    dv.Delete(dataGrid1.CurrentRowIndex);
    if(ds.HasChanges())
    {
    da.Update(ds,"name");
    }
    ds.Tables["name"].AcceptChanges();
    }
    else
    {
    MessageBox.Show("请选择一行数据");

    }