
C# DataGridView与数据源连接后,对数据的增删改查操作。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
在C#编程环境中,DataGridView控件是Windows Forms应用程序中广泛应用的、用于展示和编辑数据的强大工具。它具备直接连接到各种数据源的功能,例如数据库、数组以及集合等,从而实现数据的动态呈现和交互式操作。本教程将详细阐述在C#中使用DataGridView时,当它与数据源建立连接后,如何执行数据的增删、插入以及更新操作。### 数据源的连接 为了能够使用DataGridView进行数据处理,首先需要创建一个数据源对象。这个数据源可以是任何实现了`IList`或`IBindingList`接口的类,例如DataTable、BindingList或ArrayList等。例如,我们可以创建一个DataTable对象并填充相应的数据,随后将其与DataGridView控件进行绑定:```csharpDataTable dataTable = new DataTable();// 添加列dataTable.Columns.Add(Name);dataTable.Columns.Add(Age);// 添加行dataTable.Rows.Add(Alice, 25);dataTable.Rows.Add(Bob, 30);dataGridView.DataSource = dataTable;```### 增加数据 在DataGridView中,用户可以通过直接在最后一行添加新行来增加数据,完成操作后按下Enter键即可自动将新行添加到数据源中。如果需要通过程序控制来增加数据,则可以通过调用数据源的Add方法添加新的数据记录:```csharpDataRow newRow = dataTable.NewRow();newRow[Name] = Charlie;newRow[Age] = 35;dataTable.Rows.Add(newRow);```### 删除数据 用户可以直接在DataGridView中选中特定的行并按下Delete键来删除该行,或者通过编程方式删除指定索引位置的行:```csharpint rowIndex = dataGridView.CurrentRow.Index;if (rowIndex != -1){ dataTable.Rows.RemoveAt(rowIndex);}```### 插入数据 在DataGridView中进行插入操作通常意味着在已有行的特定位置添加新的行。由于DataGridView默认情况下不支持直接插入操作功能,因此我们需要先删除现有的行,然后在合适的位置插入新的行:```csharpint insertIndex = ...; // 确定插入位置DataRow existingRow = dataTable.Rows[insertIndex];dataTable.Rows.Remove(existingRow);DataRow newRow = dataTable.NewRow();newRow[Name] = David;newRow[Age] = 40;dataTable.Rows.InsertAt(newRow, insertIndex);existingRow = newRow; // 如果需要保留原有行信息, 可以恢复该变量值```### 更新数据 当用户在已有的行中修改了其中的数据时,这些更改会自动同步到底层的数据源中,这是因为DataGridView已经与该数据源建立了连接。如果需要在代码中手动更新这些修改后的信息,可以访问所选行的相关属性来获取和修改其值:```csharpif (dataGridView.CurrentRow.IsNewRow){ // 如果当前行是新增的, 则按照之前讲解的方法添加}else{ int rowIndex = dataGridView.CurrentRow.Index; DataRow dataRow = dataTable.Rows[rowIndex]; dataRow[Name] = Eve; dataRow[Age] = 45;}```### 数据验证 在进行任何涉及数据的操作之前,通常需要执行适当的数据验证步骤以确保输入数据的有效性和符合预期的格式。可以使用DataGridView控件的`CellValidating`事件来实现这一功能:```csharpprivate void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e){ if (!string.IsNullOrEmpty(e.FormattedValue) && !Regex.IsMatch(e.FormattedValue, @^[a-zA-Z]+$)) { e.Cancel = true; MessageBox.Show(姓名只能包含字母!); }}```### 提交更改 默认情况下,当底层的数据源是一个可更新的数据库连接时, 所有对数据的更改都会在用户离开单元格或者关闭表单时自动保存。对于其他类型的非数据库连接的数据源, 可能需要手动调用`AcceptChanges()`方法来明确地提交这些更改:```csharpdataTable.AcceptChanges();
全部评论 (0)


