Tag: datagridview

如何在外部MS Access数据库更新的C#WinForms中收到通知?

我有一个DataGridView显示来自MS Access数据库的数据。 我正在使用带有TableAdapter和BindingSource的DataSet将数据链接到DataGridView : tableAdapter = new AccountsTableAdapter(); dataTable = new Accounts.AccountsDataTable(); tableAdapter.Fill(dataTable); tableBindingSource = new BindingSource(); tableBindingSource.DataSource = dataTable; dataGridView1.DataSource = tableBindingSource; 我想知道当从我的应用程序外部修改数据库表时如何检测或获得通知 – 从Access界面或其他应用程序对数据库执行的行更新,插入,删除。 此外,根据此假定通知,如何更新我的DataSet以便仅更新受影响的行 – >仅接收新插入的行,已修改的行的受影响的字段值以及已删除的索引。 所以,基本上,我想要获得的是一种将数据库表与DataGridView同步的方法。 我已经设法将我在DataGridView修改或插入的行保存到数据库中,现在能够执行此数据库的互惠端 – 查看绑定会很好。

货币文化格式不适用于DataGridView列

我有2个DataGridViews(DGV),并且我都有我要格式化的货币列。 我写的代码似乎在一个中工作,但在另一个中则不起作用。 两个DGV都以这种方式设置:数据首先加载到DataTable中。 然后BindingSource链接到此DataTable。 最后,DGV将这个BindingSource对象用于他们的数据。 我在表单的Load事件中使用以下代码来自定义两个DGV的货币列: dataGridView.Columns[columnIndexHere].DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo(“de-DE”); dataGridView.Columns[columnIndexHere].DefaultCellStyle.Format = String.Format(“c”) 似乎将一个DGV中的列格式化为另一个DGV。 此外,它的NOT工作的DGV在其父窗体中甚至没有那么多的function代码..我检查了代码和DGV的属性,看看我是否在其他地方更改格式,但是我什么都没发现.. 两个DGV加载数据的方式之间的唯一微小区别是,对于第一个DGV的DataTable(其中格式化工作),数据通过SELECT语句(通过我自己的函数)加载…在第二个DGV的DataTable(用于哪个格式化不起作用),我不从DB加载任何数据,而只是手动定义列(在DataTable中),因为在这种情况下用户需要输入数据.. 任何线索为什么格式化不能在第二个DGV上工作? 编辑:添加更多信息: 为了演示这个问题,我创建了一个新的C#winforms项目,在其上只添加了一个DataGridView,并将以下代码添加到Load事件中。 即使对于此代码,也没有进行货币格式化: DataTable dataTable = new DataTable(); dataTable.Columns.Add(“ColA”); dataTable.Columns.Add(“ColB”); dataTable.Columns.Add(“ColC”); dataTable.Rows.Add(“John”, 832.293, “London”); dataTable.Rows.Add(“Alice”, 32972978.20489, “Atlanta”); dataTable.Rows.Add(“Mark”, 9184793284739, “Tokyo”); BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = dataTable; dataGridView1.DataSource = bindingSource; var format = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone(); format.CurrencySymbol = “Mn. “; […]

以编程方式更改值时,不要在DataGridView中触发单元格值更改事件

我想知道当以编程方式更改值时是否有办法在DataGridView中不触发CellValueChanged事件? 我只想在用户手动更改值时处理该事件,例如单击或键入其中一个框。 在我的应用程序中,我还以编程方式设置值,并且不希望处理该事件。 谢谢,Ritesh

DataGridView-如何跳转到搜索中的选定行?

我使用以下代码在DataGridView中查找行并突出显示该行。 private void btnSearch_Click(object sender, EventArgs e) { currentMode = ModeSelection.Search; if (cmbSearchBy.SelectedIndex == Convert.ToInt16(SearchBy.MaterialID)) { dgvSearchResults.SelectionMode = DataGridViewSelectionMode.FullRowSelect; int rowIndex = -1; try { foreach (DataGridViewRow row in dgvSearchResults.Rows) { if (row.Cells[1].Value.ToString().Equals(materialLocation.MaterialID)) { //Select the row here rowIndex = row.Index; dgvSearchResults.Rows[rowIndex].Selected = true; break; } } } catch (Exception ex) { throw ex; } […]

如何为DataGridViewTextBoxColumn设置Password属性

我已经使用DataGridView来实现用户名密码UI。 密码显示在DataGridViewTextBoxColumn类型列中。 如何使用DataGridViewTextBoxColumn的现有代码并实现文本的密码属性?

使用数据源和entity framework填充以编程方式声明的datagridview

只是与c#winforms datagridview有一些小问题。 这是我的情景 我正在使用entity framework,并试图将某些实体模型绑定到我的datagridview数据源。 var query = from q in context.foo select q; dgv_Disp.DataSource = query.ToList(); 当我在一个在GUI中具有datagridview的表单类上运行上面这段代码时,一切正常。 datagridview将自动生成列和行数。 但是当我运行这个完全相同的代码,除了我在GUI中没有datagridview,我只是以编程方式声明它,然后像上面的代码一样设置数据源。 当我这样做时,不会生成任何行或列。 这两个不同的datagridviews有什么区别? 我知道在表单类的designer.cs文件中设置了属性。 但我尝试复制这些设置,但仍然不会填充。 我知道这可能很简单,但我根本无法解决这个问题。 如果有人能告诉我我做错了什么,那就太好了! 编辑 我使用过AutoGenerateColumns = true但它没有任何区别。 另外,我实际上并没有尝试显示这个datagridview,我只是将它绑定到实体对象,这样我可以使用字符串索引访问其成员。 但我不想查询数据库只是为了获取datagridview特定格式的信息,因为在我的实际场景中,我已经拥有了来自先前查询的实体数据。 我只是使用上面的代码作为例子。

为什么这个错误没有被抓住?

我的项目中有以下代码,deleteselector是一个包含datagridview(带有自动调整列)的表单。 try { if (deleteSelector.ShowDialog() == DialogResult.OK) { } } catch (InvalidOperationException) { //Bug workaround } try catch是因为一个带有gridview的弹出窗体会偶尔出现一次invalidoperationexception。 这是建议的解决方法,请参阅 http://connect.microsoft.com/VisualStudio/feedback/details/145633/invalidoperationexception-thrown-when-a-form-with-a-bound-datagridview-with-auto-sizing-columns-is-shown 早些时候,我在deleteSelector上使用了Show,并且解决方法工作得很好。 现在,使用showdialog似乎错误不再被捕获(我得到一个未捕获的错误消息)。 为什么错误没有被捕获?

如何validationDataGridView输入?

我对DataGridView输入validation有一些严重的问题: 我正在使用Entity Framework开发一个项目,并且我已将DataGridView元素绑定到数据库。 如果用户将一些数据插入到不可为空的列中,然后清除数据以使列保持空白,则单击另一个DataGridView单元格,发生exception并且我收到运行时错误。 或者,如果用户尝试将字符串插入到整数列中,则会得到一条非常长的错误消息,该消息根本不是用户友好的。 是否有任何简单的方法来validationDataGridView单元格?

DataGridView C#编辑模式下的行中的默认值

我有一个程序,用于使用gridview将值输入数据库。 gridview中填充了一个DataSet的“空”结果,该结果从我想要的表中查询该数据库。 这将使用我想要的正确列填充网格(即,来自db中某个表的空行的网格)。 填写列时,我会获取数据并手动更新数据库。 我如何使用gridview的基本示例: this.fullUutDataTableAdapter.Fill(this.dalsaUutDataSet.ResultsFullUut); DataView dv = this.dalsaUutDataSet.ResultsFullUut.DefaultView; Grid_modify.DataSource = dv; foreach(DataGridViewRow dr in Grid_modify.Rows) { dr.Cells[“YieldID”].Value = -1; } 但是,我希望某些列具有默认值。 我已经尝试更改列的默认值,但您无法更改属性,只能“获取”它。 或者,我尝试解析空网格中的行并填充值。 当网格最初加载时(值显示在适当的位置),这可以正常工作。 然而,当我进入编辑模式时,这些值一无所获。 NEXT,我尝试使用一些RowEdit事件,并在输入编辑模式时尝试填充值,但是,当您进入和退出编辑模式时,这会导致问题。 似乎是一种看似必要的更复杂,更混乱的做事方式。 所以问题是,在某些列中使用默认值填充gridview的最佳方法是什么? 我更希望“最干净”的解决方案成为可能。 但是,我认识到事情并不总是这样…… 感谢您的帮助! 干杯。

用于检查更改的DataGridView事件

我有一个DataGridView ,它有一堆列和一个名为IsChecked的checkBoxColumn。 我想在行检查状态发生变化时引发事件。 检查或取消选中行可以在用户单击checkBox时或按行上的空格键时完成。 这是我将checkBoxColumn添加到我的网格的方式: dgvMain.Columns.Add(new DataGridViewCheckBoxColumn { Name = “IsChecked” , Width = 20, Visible = false, HeaderText = “”, SortMode = DataGridViewColumnSortMode.NotSortable, DisplayIndex = Columns.Count, //to be displayed as last column ValueType = typeof(bool), FalseValue = false, TrueValue = true }); 这就是我按下空格键时检查单元格的方法: private void dgvMain_KeyDown(object sender, KeyEventArgs e) { foreach (DataGridViewRow row in […]