2

datagridview 绑定(datagridview 绑定数据更新 刷新)

一、概念介绍

DataGridView是Windows Forms中数据表格控件,它是WinForm中重要的数据控件之一,可以提供多种功能,如数据绑定、分页、排序、过滤、编辑、选择、格式化、样式控制等,是WinForm中常用的数据控件。

绑定数据源是DataGridView的重要功能之一,它可以将数据源与控件进行绑定,简化了数据显示和管理的过程,使得数据显示和管理更加方便和快捷。

本文将详细介绍DataGridView绑定数据源的方法,包括以下内容:

1.使用数据源绑定控件

2.手动加入数据源

3.使用DataSet绑定数据源

4.使用DataTable绑定数据源

5.使用List集合绑定数据源

6.使用BindingList集合绑定数据源

7.使用BindingSource绑定数据源

二、使用数据源绑定控件

数据源绑定控件是WinForm中常用的一种数据绑定方法,它的主要思想是将数据源与数据控件进行绑定,让控件根据数据源的变化自动刷新数据。以下是使用数据源绑定控件绑定数据源的基本步骤:

1.打开Visual Studio,新建一个窗体应用程序。

2.从工具箱中将DataGridView控件拖放到窗体上。

3.在数据窗口中新建一个数据集,选中数据集,打开属性窗口(可通过点击F4快捷键或者在视图菜单中选中属性窗口),设置数据集的名称和命名空间。

4.右键单击数据集,选择添加->表,添加一个表(或者通过添加数据适配器添加一个表)。

5.在表中加入一些数据(比如姓名、年龄、地址等信息),每个字段都要添加一个列。

6.打开数据窗口中的表,绑定DataGridView控件,在属性窗口中选择“数据绑定”,将DataGridView控件的DataSource属性指定为数据集中的表。

7.在DataGridView控件上右键单击,选择“编辑列”,设置每一列的HeaderText、DataPropertyName等属性值,确保数据可以正确显示。

以上就是使用数据源绑定控件绑定数据源的基本步骤。可以通过运行程序,查看DataGridView控件是否可以正确显示数据。

三、手动加入数据源

在使用数据源绑定控件的时候,我们需要提前创建好数据集和数据表,并在数据表中手动加入数据。如果数据量比较小,手动加入数据并不是什么困难的事情。以下是手动加入数据源的基本步骤:

1.从工具箱中将DataGridView控件拖放到窗体上。

2.手动添加数据表,添加数据列,设置数据类型。

3.通过代码术语,手动添加数据到数据表中。

4.将DataGridView控件的DataSource属性指定为数据表。

5.在DataGridView控件上右键单击,选择“编辑列”,设置每一列的HeaderText、DataPropertyName等属性值,确保数据可以正确显示。

以下是手动加入数据源的示例代码:

```

private void Form1_Load(object sender, EventArgs e)

{

//手动添加数据表

DataTable dt = new DataTable();

//手动添加数据列

DataColumn column1 = new DataColumn("ID", typeof(int));

DataColumn column2 = new DataColumn("Name", typeof(string));

DataColumn column3 = new DataColumn("Age", typeof(int));

DataColumn column4 = new DataColumn("Address", typeof(string));

//将数据列添加到数据表中

dt.Columns.Add(column1);

dt.Columns.Add(column2);

dt.Columns.Add(column3);

dt.Columns.Add(column4);

//手动添加数据

DataRow row1 = dt.NewRow();

row1["ID"] = 1;

row1["Name"] = "张三";

row1["Age"] = 18;

row1["Address"] = "北京市";

dt.Rows.Add(row1);

DataRow row2 = dt.NewRow();

row2["ID"] = 2;

row2["Name"] = "李四";

row2["Age"] = 20;

row2["Address"] = "上海市";

dt.Rows.Add(row2);

DataRow row3 = dt.NewRow();

row3["ID"] = 3;

row3["Name"] = "王五";

row3["Age"] = 22;

row3["Address"] = "广州市";

dt.Rows.Add(row3);

//绑定数据

dataGridView1.DataSource = dt;

//设置每一列的HeaderText和DataPropertyName

dataGridView1.Columns["ID"].HeaderText = "编号";

dataGridView1.Columns["ID"].DataPropertyName = "ID";

dataGridView1.Columns["Name"].HeaderText = "姓名";

dataGridView1.Columns["Name"].DataPropertyName = "Name";

dataGridView1.Columns["Age"].HeaderText = "年龄";

dataGridView1.Columns["Age"].DataPropertyName = "Age";

dataGridView1.Columns["Address"].HeaderText = "地址";

dataGridView1.Columns["Address"].DataPropertyName = "Address";

}

```

四、使用DataSet绑定数据源

DataSet是一种以xml格式存储数据的对象,它可以将多个表格以及它们的关联关系存储在一个对象中,是一种非常方便的数据存储方式。DataSet可以通过DataSet Designer或者代码手写的方式创建,以下是使用DataSet绑定数据源的基本步骤:

1.从工具箱中将DataGridView控件拖放到窗体上。

2.创建数据集。

3.使用Select语句从数据库中读取数据。

4.将数据绑定到DataGridView控件上。

以下是使用DataSet绑定数据源的示例代码:

```

private void Form1_Load(object sender, EventArgs e)

{

//创建数据集

DataSet ds = new DataSet();

//使用Select语句从数据库中读取数据

string connectionString = "server=.;database=Northwind;uid=sa;pwd=123456;";

SqlConnection connection = new SqlConnection(connectionString);

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Customers", connection);

adapter.Fill(ds, "Customers");

//绑定数据

dataGridView1.DataSource = ds.Tables[0];

//设置每一列的HeaderText和DataPropertyName

dataGridView1.Columns["CustomerID"].HeaderText = "编号";

dataGridView1.Columns["CustomerID"].DataPropertyName = "CustomerID";

dataGridView1.Columns["CompanyName"].HeaderText = "公司名称";

dataGridView1.Columns["CompanyName"].DataPropertyName = "CompanyName";

dataGridView1.Columns["ContactName"].HeaderText = "联系人";

dataGridView1.Columns["ContactName"].DataPropertyName = "ContactName";

dataGridView1.Columns["ContactTitle"].HeaderText = "联系人职位";

dataGridView1.Columns["ContactTitle"].DataPropertyName = "ContactTitle";

dataGridView1.Columns["Address"].HeaderText = "地址";

dataGridView1.Columns["Address"].DataPropertyName = "Address";

dataGridView1.Columns["City"].HeaderText = "城市";

dataGridView1.Columns["City"].DataPropertyName = "City";

dataGridView1.Columns["Region"].HeaderText = "地区";

dataGridView1.Columns["Region"].DataPropertyName = "Region";

dataGridView1.Columns["PostalCode"].HeaderText = "邮编";

dataGridView1.Columns["PostalCode"].DataPropertyName = "PostalCode";

dataGridView1.Columns["Country"].HeaderText = "国家";

dataGridView1.Columns["Country"].DataPropertyName = "Country";

dataGridView1.Columns["Phone"].HeaderText = "电话";

dataGridView1.Columns["Phone"].DataPropertyName = "Phone";

dataGridView1.Columns["Fax"].HeaderText = "传真";

dataGridView1.Columns["Fax"].DataPropertyName = "Fax";

}

```

五、使用DataTable绑定数据源

DataTable是一种提供数据存储和检索能力的对象,它是DataSet中最小的单位,可以用来存储从数据库中查询出来的数据,但不包含关系表和表之间的关联关系。以下是使用DataTable绑定数据源的基本步骤:

1.从工具箱中将DataGridView控件拖放到窗体上。

2.创建数据表。

3.使用Select语句从数据库中读取数据。

4.将数据绑定到DataGridView控件上。

以下是使用DataTable绑定数据源的示例代码:

```

private void Form1_Load(object sender, EventArgs e)

{

//创建数据表

DataTable dt = new DataTable();

//使用Select语句从数据库中读取数据

string connectionString = "server=.;database=Northwind;uid=sa;pwd=123456;";

SqlConnection connection = new SqlConnection(connectionString);

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Customers", connection);

adapter.Fill(dt);

//绑定数据

dataGridView1.DataSource = dt;

//设置每一列的HeaderText和DataPropertyName

dataGridView1.Columns["CustomerID"].HeaderText = "编号";

dataGridView1.Columns["CustomerID"].DataPropertyName = "CustomerID";

dataGridView1.Columns["CompanyName"].HeaderText = "公司名称";

dataGridView1.Columns["CompanyName"].DataPropertyName = "CompanyName";

dataGridView1.Columns["ContactName"].HeaderText = "联系人";

dataGridView1.Columns["ContactName"].DataPropertyName = "ContactName";

dataGridView1.Columns["ContactTitle"].HeaderText = "联系人职位";

dataGridView1.Columns["ContactTitle"].DataPropertyName = "ContactTitle";

dataGridView1.Columns["Address"].HeaderText = "地址";

dataGridView1.Columns["Address"].DataPropertyName = "Address";

dataGridView1.Columns["City"].HeaderText = "城市";

dataGridView1.Columns["City"].DataPropertyName = "City";

dataGridView1.Columns["Region"].HeaderText = "地区";

dataGridView1.Columns["Region"].DataPropertyName = "Region";

dataGridView1.Columns["PostalCode"].HeaderText = "邮编";

dataGridView1.Columns["PostalCode"].DataPropertyName = "PostalCode";

dataGridView1.Columns["Country"].HeaderText = "国家";

dataGridView1.Columns["Country"].DataPropertyName = "Country";

dataGridView1.Columns["Phone"].HeaderText = "电话";

dataGridView1.Columns["Phone"].DataPropertyName = "Phone";

dataGridView1.Columns["Fax"].HeaderText = "传真";

dataGridView1.Columns["Fax"].DataPropertyName = "Fax";

}

```

六、使用List集合绑定数据源

List是一种泛型集合,它可以存储同一种数据类型的多个元素,并提供了多种数据操作方法。手动创建List集合并手动添加数据到List集合中是一种常用的数据绑定方法。以下是使用List集合绑定数据源的基本步骤:

1.从工具箱中将DataGridView控件拖放到窗体上。

2.创建List集合。

3.手动添加数据到List集合中。

4.将数据绑定到DataGridView控件上。

以下是使用List集合绑定数据源的示例代码:

```

private void Form1_Load(object sender, EventArgs e)

{

//创建List集合

List customers = new List();

//手动添加数据

customers.Add(new Customer() { CustomerID = "ALFKI", CompanyName = "Alfreds Futterkiste", ContactName = "Maria Anders" });

customers.Add(new Customer() { CustomerID = "ANATR", CompanyName = "Ana Trujillo Emparedados y helados", ContactName = "Ana Trujillo" });

customers.Add(new Customer() { CustomerID = "ANTON", CompanyName = "Antonio Moreno Taqueria", ContactName = "Antonio Moreno" });

customers.Add(new Customer() { CustomerID = "AROUT", CompanyName = "Around The Horn", ContactName = "Thomas Hardy" });

customers.Add(new Customer() { CustomerID = "BERGS", CompanyName = "Berglunds snabbkop", ContactName = "Christina Berglund" });

//绑定数据

dataGridView1.DataSource = customers;

//设置每一列的HeaderText和DataPropertyName

dataGridView1.Columns["CustomerID"].HeaderText = "编号";

dataGridView1.Columns["CustomerID"].DataPropertyName = "CustomerID";

dataGridView1.Columns["CompanyName"].HeaderText = "公司名称";

dataGridView1.Columns["CompanyName"].DataPropertyName = "CompanyName";

dataGridView1.Columns["ContactName"].HeaderText = "联系人";

dataGridView1.Columns["ContactName"].DataPropertyName = "ContactName";

}

class Customer

{

public string CustomerID { get; set; }

public string CompanyName { get; set; }

public string ContactName { get; set; }

}

```

七、使用BindingList集合绑定数据源

BindingList是一种可绑定的泛型集合,它可以将数据与控件进行绑定,当数据发生变化时,控件会自动更新。使用BindingList集合绑定数据源是一种非常方便的数据绑定方式。以下是使用BindingList集合绑定数据源的基本步骤:

1.从工具箱中将DataGridView控件拖放到窗体上。

2.创建BindingList集合。

3.手动添加数据到BindingList集合中。

4.将BindingList集合绑定到DataGridView控件上。

以下是使用BindingList集合绑定数据源的示例代码:

```

private void Form1_Load(object sender, EventArgs e)

{

//创建BindingList集合

BindingList customers = new BindingList();

//手动添加数据

customers.Add(new Customer() { CustomerID = "ALFKI", CompanyName = "Alfreds Futterkiste", ContactName = "Maria Anders" });

customers.Add(new Customer() { CustomerID = "ANATR", CompanyName = "Ana Trujillo Emparedados y helados", ContactName = "Ana Trujillo" });

customers.Add(new Customer() { CustomerID = "ANTON", CompanyName = "Antonio Moreno Taqueria", ContactName = "Antonio Moreno" });

customers.Add(new Customer() { CustomerID = "AROUT", CompanyName = "Around The Horn", ContactName = "Thomas Hardy" });

customers.Add(new Customer() { CustomerID = "BERGS", CompanyName = "Berglunds snabbkop", ContactName = "Christina Berglund" });

//绑定数据

dataGridView1.DataSource = customers;

//设置每一列的HeaderText和DataPropertyName

dataGridView1.Columns["CustomerID"].HeaderText = "编号";

dataGridView1.Columns["CustomerID"].DataPropertyName = "CustomerID";

dataGridView1.Columns["CompanyName"].HeaderText = "公司名称";

dataGridView1.Columns["CompanyName"].DataPropertyName = "CompanyName";

dataGridView1.Columns["ContactName"].HeaderText = "联系人";

dataGridView1.Columns["ContactName"].DataPropertyName = "ContactName";

}

class Customer

{

public string CustomerID { get; set; }

public string CompanyName { get; set; }

public string ContactName { get; set; }

}

```

八、使用BindingSource绑定数据源

BindingSource是一种数据源管理器,它可以用来管理数据源,并将数据源与控件进行绑定。BindingSource可以将多种数据源(如DataTable、DataSet、List、数组等)进行整合,为数据绑定提供了更大的灵活性。以下是使用BindingSource绑定数据源的基本步骤:

1.从工具箱中将DataGridView控件拖放到窗体上。

2.创建BindingSource对象。

3.创建数据集或数据表或集合或数组,从数据库中读取数据或手动添加数据。

4.将数据绑定到BindingSource对象上。

5.将BindingSource对象绑定到DataGridView控件上。

以下是使用BindingSource绑定数据源的示例代码:

```

private void Form1_Load(object sender, EventArgs e)

{

//创建BindingSource对象

BindingSource bs = new BindingSource();

//创建数据集或数据表或集合或数组,从数据库中读取数据或手动添加数据

DataTable dt = new DataTable();

string connectionString = "server=.;database=Northwind;uid=sa;pwd=123456;";

SqlConnection connection = new SqlConnection(connectionString);

SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Customers", connection);

adapter.Fill(dt);

//将数据绑定到BindingSource对象上

bs.DataSource = dt;

//将BindingSource对象绑定到DataGridView控件上

dataGridView1.DataSource = bs;

//设置每一列的HeaderText和DataPropertyName

dataGridView1.Columns["CustomerID"].HeaderText = "编号";

dataGridView1.Columns["CustomerID"].DataPropertyName = "CustomerID";

dataGridView1.Columns["CompanyName"].HeaderText = "公司名称";

dataGridView1.Columns["CompanyName"].DataPropertyName = "CompanyName";

dataGridView1.Columns["ContactName"].HeaderText = "联系人";

dataGridView1.Columns["ContactName"].DataPropertyName = "ContactName";

dataGridView1.Columns["ContactTitle"].HeaderText = "联系人职位";

dataGridView1.Columns["ContactTitle"].DataPropertyName = "ContactTitle";

dataGridView1.Columns["Address"].HeaderText = "地址";

dataGridView1.Columns["Address"].DataPropertyName = "Address";

dataGridView1.Columns["City"].HeaderText = "城市";

dataGridView1.Columns["City"].DataPropertyName = "City";

在Datagridview控件中,数据更新和刷新是非常常见的操作。数据更新可以指数据源中的数据有变化,需要及时同步到Datagridview中。而刷新则是指需要重新加载数据源中的数据,更新DataGridView中的显示结果。在此,我们将详细介绍Datagridview绑定数据更新和刷新的相关知识。

一、Datagridview的数据绑定

1.数据源与Datagridview绑定

在Datagridview的使用中,首先要完成的是数据源与Datagridview的绑定。

在Winform开发中,可以通过DataSet、DataTable、List等数据容器来存储数据,然后将数据源与Datagridview进行绑定。

以DataTable为例,下面是一段示例代码:

```csharp

//创建一个DataTable

DataTable dt = new DataTable();

//向DataTable中添加列

dt.Columns.Add("ID", typeof(int));

dt.Columns.Add("Name", typeof(string));

//向DataTable中添加数据

dt.Rows.Add(1, "张三");

dt.Rows.Add(2, "李四");

//将DataTable绑定到DataGridView上

this.dataGridView1.DataSource = dt;

```

通过以上代码,我们就将DataTable和Datagridview成功地进行了绑定。

2.绑定数据源的方式

在Datagridview中,绑定数据源主要有两种方式:直接绑定和自定义绑定。

直接绑定是指将一个数据容器(如DataTable)直接通过DataGridView的DataSource属性进行绑定。这种方式也是最简单的数据绑定方式。例如,我们可以通过以下代码实现直接绑定:

```csharp

this.dataGridView1.DataSource = dt;

```

自定义绑定则需要更多的代码来定义Datagridview的样式、数据值以及数据源对应关系等信息。自定义绑定主要是对Datagridview的更加灵活的控制,可以实现更丰富多样的数据呈现方式。

例如,我们可以通过以下代码实现自定义绑定:

```csharp

//定义Datagridview的列

DataGridViewColumn col1 = new DataGridViewTextBoxColumn();

col1.Name = "ID";

col1.HeaderText = "编号";

col1.DataPropertyName = "ID";

DataGridViewColumn col2 = new DataGridViewTextBoxColumn();

col2.Name = "Name";

col2.HeaderText = "姓名";

col2.DataPropertyName = "Name";

//将列添加到DataGridView中

this.dataGridView1.Columns.Add(col1);

this.dataGridView1.Columns.Add(col2);

//设置DataGridView的数据源

this.dataGridView1.DataSource = dt;

```

二、Datagridview数据更新

1.手动更新数据

当数据源中的某些数据发生变化时,我们需要及时将这些变化同步到Datagridview中。手动更新数据的方式是指通过代码控制Datagridview的显示,达到将数据源的变化显示在Datagridview中的目的。

假设现在有一个DataTable,其中有一个字段Name的值进行了更改,我们需要将这个更改同步到Datagridview中。代码如下:

```csharp

//找到数据源中Name字段所对应的列索引位置

int column = dt.Columns["Name"].Ordinal;

//找到需要更新的单元格

int row = 1;

DataGridViewCell cell = this.dataGridView1.Rows[row].Cells[column];

//更改单元格的值

cell.Value = https://czxt.haoyundao.net/"王五";

```

执行以上代码后,我们就将数据源中的更改同步到了Datagridview中。

2.自动更新数据

在实际开发中,更改数据可以通过一些数据库操作等方式直接进行,而无需手动控制Datagridview。此时,我们需要使用到Datagridview自身的自动更新机制。

当数据源有新增、删除或修改等操作时,Datagridview会自动进行更新显示。但是,这种自动更新需要满足以下两个条件:

1.数据源需要实现IBindingList接口

2.数据源需要触发ListChanged事件

假设我们有一个DataTable,其中有一项数据被删除,需要将此更改同步到Datagridview。代码如下:

```csharp

//删除数据源中的某一行数据

dt.Rows.RemoveAt(1);

```

我们无需再手动更新Datagridview,Datagridview会自动进行数据更新。

三、Datagridview数据刷新

1.Datagridview数据刷新基础知识

在Datagridview中,数据刷新是指重新绑定数据源,更新DataGridView中的显示结果。在实际操作中,Datagridview数据刷新十分常见。

在使用DataGridView刷新数据之前,需要了解两点:

1.数据源需要重新绑定到DataGridView上,即DataSource属性需要重新指定。

2.需要考虑DataGridView的Column元素,即表格中存在的列一定要与新数据的字段对应,否则会引发异常。

2.数据源重新绑定

当我们在数据库中删除一条记录后,需要重新从数据库中获取数据并显示在Datagridview中。需要先清空当前Datagridview的显示结果,然后重新绑定数据源。

清空显示结果可以通过以下代码实现:

```csharp

this.dataGridView1.DataSource = null;

this.dataGridView1.Rows.Clear();

this.dataGridView1.Refresh();

```

重新绑定数据源可以通过以下代码实现:

```csharp

//重新读取数据源

DataTable dt = GetDataFromSql();

//重新绑定数据源

this.dataGridView1.DataSource = dt;

```

3.列的重新匹配

在重新绑定数据源的情况下,需要手动调整列显示的顺序、列的显示名称、列的数据类型等内容,不然就会出现列与数据源不匹配的情况。

通过DataGridView的Columns属性,可以访问到所有列的信息。根据实际需要,对列的属性进行调整即可完成列与数据源的匹配。

例如,我们可以通过以下代码重新调整列信息:

```csharp

//清空现有列

this.dataGridView1.Columns.Clear();

//重新添加列

DataGridViewColumn col1 = new DataGridViewTextBoxColumn();

col1.Name = "ID";

col1.HeaderText = "编号";

col1.DataPropertyName = "ID";

DataGridViewColumn col2 = new DataGridViewTextBoxColumn();

col2.Name = "Name";

col2.HeaderText = "姓名";

col2.DataPropertyName = "Name";

this.dataGridView1.Columns.Add(col1);

this.dataGridView1.Columns.Add(col2);

```

4.刷新的优化

在数据量较大的情况下,重新绑定数据源会消耗大量的性能,因此需要在刷新时进行优化。

解决方案:在刷新时,只更新需要刷新的行数据,不更新DataGridView所有数据。具体做法可以通过以下代码实现:

```csharp

//记录当前选中行

int selectedrowindex = dataGridView1.SelectedCells[0].RowIndex;

DataGridViewRow selectedRow = dataGridView1.Rows[selectedrowindex];

//重新读取数据源

DataTable dt = GetDataFromSql();

//根据需要刷新的行索引更新相应数据

this.dataGridView1.Rows.Clear();

foreach (DataRow dr in dt.Rows)

{

int index = this.dataGridView1.Rows.Add();

this.dataGridView1.Rows[index].Cells[0].Value = https://czxt.haoyundao.net/dr[/"ID"].ToString();

this.dataGridView1.Rows[index].Cells[1].Value = https://czxt.haoyundao.net/dr[/"Name"].ToString();

//找到需要更新的行并更新

if (Convert.ToInt32(this.dataGridView1.Rows[index].Cells[0].Value) == Convert.ToInt32(selectedRow.Cells[0].Value))

{

for (int i = 0; i < this.dataGridView1.Rows[index].Cells.Count; i++)

{

this.dataGridView1.Rows[index].Cells[i].Selected = true;

}

}

}

```

以上就是关于Datagridview绑定数据更新刷新的详细介绍,希望对大家有所帮助。

本文来自网络,不代表本站立场。转载请注明出处: https://tj.jiuquan.cc/a-2141429/
1
上一篇itoa(itoa函数可以用什么替换)
下一篇 itunes不识别iphone

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: alzn66@foxmail.com

关注微信

微信扫一扫关注我们

返回顶部