DataGridView 绑定List<>数据的更新
时间: 2023-12-08 19:03:16 浏览: 177
当 DataGridView 绑定 List<> 数据时,如果 List<> 数据更新了,需要调用 DataGridView 的 Refresh 方法来刷新数据显示。可以通过以下几种方式实现:
1. 直接调用 DataGridView 的 Refresh 方法:
```
dataGridView1.Refresh();
```
2. 将绑定的 List<> 数据重新赋值给 DataGridView 的 DataSource 属性,然后再调用 Refresh 方法:
```
dataGridView1.DataSource = list;
dataGridView1.Refresh();
```
3. 将绑定的 List<> 数据转换为 BindingList<>,然后再将 BindingList<> 赋值给 DataGridView 的 DataSource 属性,这样当 BindingList<> 数据更新时,DataGridView 会自动刷新。
```
BindingList<T> bindingList = new BindingList<T>(list);
dataGridView1.DataSource = bindingList;
```
以上是常见的更新 DataGridView 绑定 List<> 数据的方法,根据具体情况选择合适的方法即可。
相关问题
C# Winform DataGrid 绑定List<> Or ObservableCollection<> 类型无法自动刷新问题
在C# Winform中,如果想要在DataGrid中实时显示List<>或ObservableCollection<>类型的数据,需要手动触发DataGrid的数据刷新。
方法一:使用BindingList<>代替List<>或ObservableCollection<>
可以使用BindingList<>代替List<>或ObservableCollection<>,因为BindingList<>实现了IBindingList接口,该接口在数据源发生改变时会自动刷新绑定的控件。示例代码如下:
```csharp
BindingList<MyData> dataList = new BindingList<MyData>();
dataGridView1.DataSource = dataList;
```
方法二:手动触发DataGrid数据刷新
如果使用List<>或ObservableCollection<>,则需要手动触发DataGrid的数据刷新。可以通过以下两种方式实现:
1. 重新绑定数据源:
```csharp
List<MyData> dataList = new List<MyData>();
dataGridView1.DataSource = null;
dataGridView1.DataSource = dataList;
```
2. 利用BindingSource实现数据刷新:
```csharp
List<MyData> dataList = new List<MyData>();
BindingSource bs = new BindingSource();
bs.DataSource = dataList;
dataGridView1.DataSource = bs;
```
当数据源发生改变时,只需调用BindingSource的ResetBindings方法即可刷新DataGrid中的数据:
```csharp
dataList.Add(new MyData());
bs.ResetBindings(false);
```
以上两种方法都可以实现DataGrid与List<>或ObservableCollection<>类型数据的实时刷新。
C#winform的dataGridView控件与datatable实现筛选过滤显示和隐藏的功能,与dataGridView控件与List<>实现筛选过滤显示和隐藏功能哪个方便且效率高呢
在C# WinForm中,DataGridView控件与DataTable配合可以轻松实现筛选、过滤和显示/隐藏的功能。DataTable是一个预定义的数据结构,非常适合存储大量数据并提供高效的操作。当你需要对数据进行复杂操作时,比如排序、分组或者基于特定条件的筛选,DataTable通常是个不错的选择,因为它提供了内置的查询机制。
使用步骤通常是创建一个DataTable,填充数据,然后将 DataTable 设置为 DataGridView 的 DataSource。通过设置ColumnFilter属性,可以直接在用户界面实现筛选。例如:
```csharp
DataTable dt = new DataTable();
// 填充数据...
dt.DefaultView.RowFilter = "Name LIKE '张%'"; // 过滤姓张的记录
dataGridView.DataSource = dt;
```
相比之下,如果使用List<>,虽然也可以绑定到 DataGridView,但操作可能会稍微复杂一些。你需要手动维护过滤逻辑,并且可能需要遍历整个 List 来应用筛选。这种方式在小规模数据或者简单的条件筛选时还可以接受,但如果涉及到大数据量或者复杂的业务规则,就不太适合了。
阅读全文