`
dawuafang
  • 浏览: 1142426 次
文章分类
社区版块
存档分类
最新评论

DataGridView排序後,如何抓取綁定資料的正確索引值

 
阅读更多
DataGridView排序後,如何抓取綁定資料的正確索引值

今天在寫Windows From程式時,發現DataGridView在與DataTable透過BindingSource綁定,在DataGridView進行資料的排序後,DataGridView中的資料Index將會與DataTable的Index不一致,當選定的資料在進行修改後,因Index的不一致,導致在回存資料庫的時候無法斷定該回存哪一筆Row Data,這讓我很苦惱,一度想把DataGridView的排序給關閉,不讓使用者操作,不過想想,這也不是根本的解決之道,況且在我的程式中,這DataGridView的排序是必要的,不然會造成使用者操作的不方便....

在網路上找了好久,大部分都直接叫我關掉排序的功能....看到真是無言....,最後終於讓我找到解決方法,方式如下:

// DataRowView drv = dataGridView.CurrentRow.DataBoundItem as DataRowView;
DataRowView drv = dataGridView.SelectedRows[0].DataBoundItem as DataRowView;
int index = dataTable.Rows.IndexOf(drv.Row);

看程式看不懂嗎?說明如下:

先利用DataRowView.SeletedRows找到目前選擇的某一行資料,然後轉換成DataRowView,在DataRowView中有一個屬性叫做Row,其代表DataTable中的DataRow,最後再利用DataTable.rows.IndexOf()方法回傳當前的Index。

如此一來,在DataGridView排序後,仍可順利的取得目前編輯的資料在DataTable中的正確索引為何了

分享到:
评论

相关推荐

    Datagridview与Datatable同步排序

    2. **变量定义**:`col`变量用于记录上一次排序的列索引,初始值为0。 3. **条件判断**: - 如果当前点击的列索引与上次相同,则将排序方式改为降序(DESC); - 如果不同,则设置为升序(ASC),并将当前点击的列...

    datagridview进行列值添加

    若要修改特定列的值,可以通过索引访问`DataGridView`的行和列,然后设置`Value`属性。例如,改变第一行第二列的值: ```csharp // 获取行和列 DataGridViewRow row = dataGridView1.Rows[0]; DataGridViewColumn ...

    DataGridView 使用方法总结

    1. **当前单元格属性取得与变更**:可以获取或设置`CurrentCell`属性来访问当前选中的单元格,例如获取其值、列索引和行索引,并通过`CurrentCell = dataGridView1.Rows[index].Cells[index]`改变当前单元格。...

    datagridview设置行的主键

    因为行的索引值在调整顺序后并不会改变,所以按照原始索引删除会导致逻辑上的不一致。 #### 2. 解决方案 为了避免这种问题,我们需要基于行的唯一标识符来进行删除操作。具体步骤如下: 1. **确定唯一标识符**:...

    C#DataGridView值

    在`C#datagridview值.txt`文件中,可能包含了关于`DataGridView`控件的更多使用示例、操作方法和高级功能,如数据绑定、事件处理、自定义单元格样式等。深入学习`DataGridView`,你需要了解如何动态添加列,如何设置...

    datagridview

    通过`DataGridView`可以方便地将数据源绑定到控件上,并实现数据的排序、筛选、分页等功能。 ### 核心知识点解析 #### 1. 初始化DataGridView控件 ```csharp public partial class Form3 : Form { public Form3...

    C#和VB.Net DataGridView用法總結

    DataGridView单元格内输入值正确性判断 验证单元格内的输入值。 - **验证输入**: ```csharp if (string.IsNullOrEmpty(DataGridView1.Rows[rowIndex].Cells[columnIndex].Value.ToString())) { // 输入为空或...

    datagridview 详解

    Click`事件处理程序中,通过`dataGridView1.CurrentCell.Value`可以获取当前选中单元格的值,而`dataGridView1.CurrentCell.ColumnIndex`和`dataGridView1.CurrentCell.RowIndex`则分别返回该单元格所在的列索引和行...

    DataGridview 简单的分页功能

    3. **数据绑定**:获取到分页后的数据后,将其绑定到`DataGridView`。可以使用`DataSource`属性将数据集或数据表对象赋值给`DataGridView`,并调用`DataBind()`方法更新视图。 4. **分页界面**:创建“首页”、“上...

    创建DataTable结构,添加、删除数据,绑定显示在dataGridView控件上

    - 自定义显示:可以通过设置`dataGridView.Columns`的属性来自定义列的宽度、排序方式等。 5. **更新和保存数据** - `dataGridView`中的更改会自动反映到`DataTable`中,因为它们是双向绑定的。 - 若要保存数据...

    C# DataGridview操作大全 (源码)

    更新单元格值后,如果数据源是动态绑定的,更改会自动反映到`DataGridView`。若数据源未绑定,需手动同步数据,如`row["ColumnName"] = newValue`。 4. **删除一行**: 除了通过索引删除行,还可以根据特定条件...

    轻松学会dataGridView的使用(完整程序)

    例如,dataGridView.Rows.Add()用于添加新行,dataGridView.Rows.RemoveAt()用于删除指定索引的行,而 dataGridView.CurrentRow.Cells[index].Value = newValue 可以用来修改当前选中行的特定单元格值。 5. 自定义...

    DataGridView(DataGridViewComboBoxCell)使用

    `DataGridViewComboBoxCell` 是 `DataGridView` 控件中的一种特殊类型的单元格,它允许用户从一个下拉列表中选择值。这种类型的单元格非常适合那些需要从预定义列表中选择选项的场景,例如国家/地区、性别等。 ####...

    C__WinForm开发系列_-_DataGridView.doc

    在C# WinForm开发中,`DataGridView`是一个非常重要的控件,用于展示表格数据,它提供了丰富的功能,如数据绑定、排序、筛选、编辑等。本篇将详细讲解`DataGridView`的一些关键知识点。 1. **数据绑定**: `...

    Datagridview表头筛选.rar

    - `DataGridView`:.NET Framework中的一个控件,用于显示表格数据,支持多种交互操作,如排序、编辑和筛选。 - 表头筛选:允许用户根据列标题选择特定条件,只显示满足条件的行,提高数据浏览效率。 2. **实现...

    C#中怎么实现datagridview数据与文本框数据同步

    通过绑定数据源,DataGridView可以动态地更新其内容。 #### 2. TextBox控件简介 TextBox控件用于接收用户输入的文本。它是Windows Forms中最基本的输入控件之一,可以用来展示或编辑单行或多行文本。 ### 二、实现...

    datagridview合计行及多维表头的实现

    在.NET框架中,`DataGridView`控件是用于展示表格数据的一种常见组件,广泛应用于Windows Forms应用程序。本篇文章将深入探讨如何实现`DataGridView`中的合计行和多维表头功能,帮助开发者更好地理解和应用这一控件...

Global site tag (gtag.js) - Google Analytics