保存和读取DataGridView的格式

本文介绍了一种在WinForm开发中保存和加载DataGridView格式的方法,通过XML文件记录列名、标题、宽度等属性,便于用户自定义视图布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     我们在做WinForm开发的时候,经常要用到DataGridView控件,因此控件可以调整列的顺序及宽度,用户如果想保存最后调整的格式,怎么办?

    此时我们可以考虑保存每个Form中DataGridView的格式,以XML格式保存。

   步骤如下:

1. 在程序的当前目录下建立一个文件夹,例如:XML

2.先建立保存格式的方法,代码如下:

 

3.读取XML文件,并设置DataGridView格式,代码如下:

 

4.在窗体的Load事件里面调用上面的方法即可,

例如:

当然,方法有很多,这只是其中一种。

在 C# 中使用 `DataGridView` 控件进行数据的保存读取是常见的需求,尤其在 WinForms 应用程序中。以下分别介绍如何实现这两种操作。 ### 保存 DataGridView 数据到本地文件 可以将 `DataGridView` 中的数据保存为多种格式,例如 XML、CSV 或 Excel 文件。 #### 1. 保存XML 文件 通过 `DataSet` `DataTable` 可以轻松地将 `DataGridView` 的内容保存XML 格式。 ```csharp private void SaveToXml(string filePath) { DataTable table = new DataTable("MyData"); // 添加 for (int i = 0; i < dataGridView1.Columns.Count; i++) { table.Columns.Add(dataGridView1.Columns[i].Name); } // 添加行 foreach (DataGridViewRow row in dataGridView1.Rows) { if (!row.IsNewRow) { DataRow dataRow = table.NewRow(); for (int j = 0; j < dataGridView1.Columns.Count; j++) { dataRow[j] = row.Cells[j].Value; } table.Rows.Add(dataRow); } } DataSet ds = new DataSet("MyDataSet"); ds.Tables.Add(table); ds.WriteXml(filePath); } ``` #### 2. 保存为 CSV 文件 CSV 是一种轻量级的文本格式,适合简单的数据导出。 ```csharp private void SaveToCsv(string filePath) { StringBuilder sb = new StringBuilder(); // 添加标题 for (int i = 0; i < dataGridView1.Columns.Count; i++) { sb.Append(dataGridView1.Columns[i].HeaderText); if (i < dataGridView1.Columns.Count - 1) sb.Append(","); } sb.AppendLine(); // 添加行数据 foreach (DataGridViewRow row in dataGridView1.Rows) { if (!row.IsNewRow) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { string value = row.Cells[j].Value?.ToString() ?? ""; sb.Append(value.Replace(",", ";")); // 避免逗号冲突 if (j < dataGridView1.Columns.Count - 1) sb.Append(","); } sb.AppendLine(); } } File.WriteAllText(filePath, sb.ToString()); } ``` ### 从本地文件读取数据并显示在 DataGridView 中 #### 1. 从 XML 文件读取 ```csharp private void LoadFromXml(string filePath) { DataSet ds = new DataSet(); ds.ReadXml(filePath); if (ds.Tables.Count > 0) { dataGridView1.DataSource = ds.Tables[0]; } } ``` #### 2. 从 CSV 文件读取 ```csharp private void LoadFromCsv(string filePath) { DataTable table = new DataTable(); using (StreamReader sr = new StreamReader(filePath)) { string[] headers = sr.ReadLine().Split(','); foreach (string header in headers) { table.Columns.Add(header); } while (!sr.EndOfStream) { string[] rows = sr.ReadLine().Split(','); DataRow dr = table.NewRow(); for (int i = 0; i < headers.Length; i++) { dr[i] = rows[i]; } table.Rows.Add(dr); } } dataGridView1.DataSource = table; } ``` ### 从数据库读取数据并绑定到 DataGridView 可以使用 ADO.NET 将数据库中的数据加载到 `DataGridView` 中,如下所示: ```csharp private void LoadDataFromDatabase() { string connectionString = "your_connection_string_here"; string query = "SELECT * FROM YourTable"; using (SqlConnection conn = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter(query, conn); DataTable dataTable = new DataTable(); adapter.Fill(dataTable); dataGridView1.DataSource = dataTable; } } ``` ### 向数据库写入 DataGridView 数据 如果需要将 `DataGridView` 中的数据更新回数据库,可以通过遍历每一行并将更改插入或更新到数据库中。 ```csharp private void SaveDataToDatabase() { string connectionString = "your_connection_string_here"; string insertQuery = "INSERT INTO YourTable (Column1, Column2, Column3) VALUES (@Val1, @Val2, @Val3)"; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); foreach (DataGridViewRow row in dataGridView1.Rows) { if (!row.IsNewRow) { using (SqlCommand cmd = new SqlCommand(insertQuery, conn)) { cmd.Parameters.AddWithValue("@Val1", row.Cells["Column1"].Value); cmd.Parameters.AddWithValue("@Val2", row.Cells["Column2"].Value); cmd.Parameters.AddWithValue("@Val3", row.Cells["Column3"].Value); cmd.ExecuteNonQuery(); } } } } } ``` 以上方法展示了如何在 C# 中使用 `DataGridView` 进行数据的保存读取[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值