检查datagridview是不是被编辑
Posted
技术标签:
【中文标题】检查datagridview是不是被编辑【英文标题】:Check whether datagridview had been edited检查datagridview是否被编辑 【发布时间】:2012-05-08 09:47:46 【问题描述】:我的 C# winform 有一个 datagridview,当我点击更新按钮时,我应该输入什么代码来检查是否有任何单元格被编辑过?
我只需要有一个真假。
谢谢。
================================================ ==============================
我现有的代码:
#region Edit Records
private void InProSysAdministrationEventsUpdateButton_Click(object sender, EventArgs e)
if (MessageBox.Show("Please Click Ok to Edit the Events", "Confirmation", MessageBoxButtons.OKCancel) == DialogResult.OK)
ManipulateData.UpdateData(connectionString, tblconn, tblscmd, tbldataadaptor, tbldatatable, cmbuilder, "usp_readallevents", readalleventsdataGridView);
#endregion
我需要做以下事情:
1) 用户点击编辑
2) 系统检查是否有任何单元格被编辑过
3) 如果没有编辑单元格,它将 messagebox.show("No Changes Done.")
4) 否则,它将更新数据库。
【问题讨论】:
【参考方案1】:您是否查看过 DataGridView.CellValueChanged 事件? MSDN
只需为此编写一个处理程序并设置一个标志,或者执行您想要的任何操作,这将是相当简单的。
您可以如何执行此操作的示例如下:
protected override void OnLoad(EventArgs e)
myDataGridView.CellValueChanged += new DataGridViewCellEventHandler(
myDataGridView_CellValueChanged);
private void myDataGridView_CellValueChanged(
object sender, DataGridViewCellEventArgs e)
//some very crude examples of actions you might want to perform when the event handler is triggered.
myObject.update();
//or something else like
myObject.isUpdatable = true;
关于第 3 点,msgbox 可能不是通知用户非关键事件的最佳方式。他们很可能已经知道他们没有输入任何信息,您可以通过标记所需的单元格或其他方式来提供这种不那么烦人的反馈。值得深思。
以后,我建议在 MSDN 中搜索您正在使用的类,并搜索您正在寻找的事件、方法或属性的类型,并查看是否有任何匹配项。 还有很多有用的示例。
【讨论】:
【参考方案2】:int x=0;
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
x = 1;
if(x==1) //this means that gridView has been updated
【讨论】:
最好使用布尔变量,而不是整数。 并将该变量称为“isDirty”或类似的名称以上是关于检查datagridview是不是被编辑的主要内容,如果未能解决你的问题,请参考以下文章