100分求:如何判断 DataGridView 行状态?我想在提交时,判断一下DataGridView里所有行是什么状态(被修改、新加行、保持原样)

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

27 个解决方案

#1


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

#2


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

#3


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

#4


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

#5


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

同意。

#6


DataGridView.Rows[0].State  
这个?

#7


dataset有状态

#8


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

#9


判断DataTable的

#10


同意楼上

#11


有个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;
}

#12


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

#13


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

#14


楼上的师兄,我知道有这个方法,那如何判断哪一行是修改后的呢?

#15


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


你就不需要判断.直接调用
sqldataadapter.update(datatable)方法即可.他会自动根据你的行状态去调用相应的语句.

如:
你原有的数据,在调用update后不会改变
你修改过的数据在调用update方法后会调用相应的updatecommand来执行update操作
你新录的数据此时行状态会是Added,调用update方法后会调用相应的insertcommand来执行insert操作.

所以你的顾虑是多余的,你只要为sqldataadapter设置相应的insert,update...等等command就够了.

#16


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

#17


引用 1 楼 zetee 的回复:
DataGridView  没有状态,有状态的是数据源。所以DataSet状态就有


UP~

#18


路过~

#19


帮顶了!

#20


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

#21


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

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

#22


关注中。。。。帮顶

#23


引用 1 楼 zetee 的回复:
DataGridView  没有状态,有状态的是数据源。所以DataSet状态就有

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

#24


mark

#25


你就不需要判断.直接调用 
sqldataadapter.update(datatable)方法即可.他会自动根据你的行状态去调用相应的语句. 

如: 
你原有的数据,在调用update后不会改变 
你修改过的数据在调用update方法后会调用相应的updatecommand来执行update操作 
你新录的数据此时行状态会是Added,调用update方法后会调用相应的insertcommand来执行insert操作. 

所以你的顾虑是多余的,你只要为sqldataadapter设置相应的insert,update...等等command就够了.

up

#26


uop

#27


该回复于2012-06-13 11:00:32被版主删除

#1


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

#2


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

#3


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

#4


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

#5


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

同意。

#6


DataGridView.Rows[0].State  
这个?

#7


dataset有状态

#8


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

#9


判断DataTable的

#10


同意楼上

#11


有个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;
}

#12


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

#13


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

#14


楼上的师兄,我知道有这个方法,那如何判断哪一行是修改后的呢?

#15


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


你就不需要判断.直接调用
sqldataadapter.update(datatable)方法即可.他会自动根据你的行状态去调用相应的语句.

如:
你原有的数据,在调用update后不会改变
你修改过的数据在调用update方法后会调用相应的updatecommand来执行update操作
你新录的数据此时行状态会是Added,调用update方法后会调用相应的insertcommand来执行insert操作.

所以你的顾虑是多余的,你只要为sqldataadapter设置相应的insert,update...等等command就够了.

#16


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

#17


引用 1 楼 zetee 的回复:
DataGridView  没有状态,有状态的是数据源。所以DataSet状态就有


UP~

#18


路过~

#19


帮顶了!

#20


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

#21


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

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

#22


关注中。。。。帮顶

#23


引用 1 楼 zetee 的回复:
DataGridView  没有状态,有状态的是数据源。所以DataSet状态就有

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

#24


mark

#25


你就不需要判断.直接调用 
sqldataadapter.update(datatable)方法即可.他会自动根据你的行状态去调用相应的语句. 

如: 
你原有的数据,在调用update后不会改变 
你修改过的数据在调用update方法后会调用相应的updatecommand来执行update操作 
你新录的数据此时行状态会是Added,调用update方法后会调用相应的insertcommand来执行insert操作. 

所以你的顾虑是多余的,你只要为sqldataadapter设置相应的insert,update...等等command就够了.

up

#26


uop

#27


该回复于2012-06-13 11:00:32被版主删除