winform中(当数据库的数据有变化时)datagridview 刷新的问题

winform中(当数据库的数据有变化时)datagridview 刷新的问题,第1张

winform有一个特点,只要你将数据源变化了,datagridview自然就变化了。

你如果不想每隔几秒刷,我这有两个办法。

一,记录你每次修改每张表的时间。也就是你对这个表中的数据进行增删改 *** 作,就在数据库里把这个表的更新时间记录一下。然后在打开这个窗体进行查询的时候,同时获得这个时间,剩下的,你在timer里去拿你查询时记录的这个时间去和表中记录的时间去比较,不一样了,就说明改变了,你就重新读一遍数据去刷新grid

二,如果你的SQL版本是2005及以上,可以利用SqlDependency来实现,关于这个类的具体用法你可以百度一下,我说一下功能,就是建立一个数据库依赖,当数据库表一旦发生变化时,会自动触发net程序中的一个方法,在这个方法中你去重新获取数据,更新你的数据源

thisdatagridview1datasource=dataset1tables[0];//绑定数据源,这样在界面修改单元格时,就可以更新到dataset

dataAdapter dataadapter1=new dataAdapter(selectSQL,connnection);

dataadapter1update(dataset1tables[0]);//通过datatable修改数据库

thisdataGridView1DataSource = myDSTables[0]DefaultView;//输出表}catch (Exception oe) { MessageBoxShow(oeMessage, "数据库出错!"); }finally{if (mySqlConnectionState == ConnectionStateOpen)mySqlConnectionClose();}} DATAGridView只是显示控件,实际上你下面的按钮实现的只是一个填加工作,你上面的是显示。用记录集datatable记录一下信息就行了。

首先你gridview绑定的数据源最好是DataTable类型,当你编辑好数据进行修改后,可以将datagridview的数据源转换成DataTable类型,然后利用 DataRowState循环获取每行的状态是更改还是更新 *** 作,如果为更新 *** 作你可以遍历每列生成update的语句,然后统一抛给执行更新sql的方法去 *** 作。源码给你吧

DataTable dt1 = (dataGridView1DataSource as DataTable)GetChanges();

if (dt1 != null)

{

for (int i = 0, h = dt1RowsCount; i < h; i++)

{

DataRowState rowState = new DataRowState();

rowState = dt1Rows[i]RowState;

string state = rowStateToString();

string id = GuidNewGuid()ToString();

if (stateEquals("added", StringComparisonCurrentCultureIgnoreCase))

{

string str = stringFormat("insert into haadbbcp values('{0}','{1}','{2}','{3}');",id ,treeView1SelectedNodeTag, dt1Rows[i][1]ToString(), dt1Rows[i][5]ToString());

dataGridView1Rows[0]Cells["编号"]Value = id;

ss += str;

}

if (stateEquals("modified", StringComparisonCurrentCultureIgnoreCase))

{

string str = stringFormat("update hbbcp set hbbcp_WLBH='{0}',hbbcp_bz='{1}' where HBBCP_ID='{2}';", dt1Rows[i][1]ToString(), dt1Rows[i][5]ToString(), dt1Rows[i]["编号"]ToString());

ss += str;

}

可以用代理事件实现。不过简单一点的方法就是下面我介绍的这种。

Form1是Datagridview的页面。Form2是修改值的页面。

Form1:

private void changedata()

{

if(Form2ShowDialog() == DialogResultOK)

{

//重新绑定数据库

BindDgv();

}

}

Form2:

private void btnOK_Click()

{

//修改数据代码

//下面这句代码将触发上面Form1中的代码,实现重新绑定。

thisDialogResult==DialogResultOK;

}

以上就是关于winform中(当数据库的数据有变化时)datagridview 刷新的问题全部的内容,包括:winform中(当数据库的数据有变化时)datagridview 刷新的问题、c#winform datagridview控件怎么在上面直接修改并且更新到sql数据库、c#datagridview更新数据至数据库。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9765761.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存