如何判断 DataGridView 行状态?我想在提交时,判断一下DataGridView里所有行是什么状态(被修改、新加行、保持原样)  
请大家贴出源码,谢谢!~~~

解决方案 »

  1.   

    DataGridView  没有状态,有状态的是数据源。所以DataSet状态就有
      

  2.   

    绑定的数据源,如果是DataTable的话,DataRow有RowState属性
      

  3.   

    你可以把对GridView的操作都存放在DataTable里
    然后在最后在这个DataTable里判断数据的变化
      

  4.   

    我在DataGridView控件中录入数据,因为有的数据是存在的,不需要再次插入到数据,而有的数据是新增的,有的是修改的,所以要判断行的状态,如何做到,谢谢!~~~~
      

  5.   

    DataGridView  没有绑定数据源?
    绑定的数据源,如果是DataTable的话,DataRow有RowState属性同意。
      

  6.   

    DataGridView.Rows[0].State  
    这个?
      

  7.   

    数据源DataTable中每行DataRow的RowState属性
      

  8.   

    有个RowState属性,可以通过他来判断例子:
    private void DemonstrateRowState()
    {
        // Run a function to create a DataTable with one column.
        DataTable table = MakeTable();
        DataRow row;
     
        // Create a new DataRow.
        row = table.NewRow();
        // Detached row.
        Console.WriteLine("New Row " + row.RowState);
     
        table.Rows.Add(row);
        // New row.
        Console.WriteLine("AddRow " + row.RowState);
     
        table.AcceptChanges();
        // Unchanged row.
        Console.WriteLine("AcceptChanges " + row.RowState);
     
        row["FirstName"] = "Scott";
        // Modified row.
        Console.WriteLine("Modified " + row.RowState);
     
        row.Delete();
        // Deleted row.
        Console.WriteLine("Deleted " + row.RowState);
    }
     
    private DataTable MakeTable()
    {
        // Make a simple table with one column.
        DataTable table = new DataTable("table");
        DataColumn dcFirstName = new DataColumn(
            "FirstName", Type.GetType("System.String"));
        table.Columns.Add(dcFirstName);
        return table;
    }
      

  9.   

    我在DataGridView控件中录入数据,因为有的数据是存在的,不需要再次插入到数据库,而有的数据是新增的(入库),有的是修改的(在数据库中修改),所以要判断行的状态,如何做到?请各位大侠贴出源码,谢谢!~~
      

  10.   

    DataGirdView只有个IsNewRow属性:
    dgvData.Rows[dgvData.CurrentCell.RowIndex].IsNewRow
    一般可以获取数据源的状态
      

  11.   


    你就不需要判断.直接调用
    sqldataadapter.update(datatable)方法即可.他会自动根据你的行状态去调用相应的语句.如:
    你原有的数据,在调用update后不会改变
    你修改过的数据在调用update方法后会调用相应的updatecommand来执行update操作
    你新录的数据此时行状态会是Added,调用update方法后会调用相应的insertcommand来执行insert操作.所以你的顾虑是多余的,你只要为sqldataadapter设置相应的insert,update...等等command就够了.
      

  12.   

    恩,在插入数据sqldataadapter.update(datatable)就判断数据库中是否存在这种数据,存在就提示 不添加或更新数据库,不存在就加到数据库中
      

  13.   

    我刚试过了,用olddbdatadapter.update(datatable)可以
    不过我用的是access数据库,也没有采用olddbdatadapter,采用的是sql查询后的数据集,然后绑定到控件,该如何实现呢?
      

  14.   

    道理是一样的.olddbdatadapter.update()的参数只是一个datatable,
    而不管你怎么折腾,最终只要给他一个datatable,他就会按你的行状态去执行相应的command
      

  15.   

    UP!查看数据源dataset的状态 比如里面datatable的
      

  16.   

    你就不需要判断.直接调用 
    sqldataadapter.update(datatable)方法即可.他会自动根据你的行状态去调用相应的语句. 如: 
    你原有的数据,在调用update后不会改变 
    你修改过的数据在调用update方法后会调用相应的updatecommand来执行update操作 
    你新录的数据此时行状态会是Added,调用update方法后会调用相应的insertcommand来执行insert操作. 所以你的顾虑是多余的,你只要为sqldataadapter设置相应的insert,update...等等command就够了.up