将 dataGridView 序列化为 JSON
Serialize dataGridView to JSON
我的 Windows 表单应用程序上有一个 datagridview,它接受用户的输入。我想使用 JSON 来存储此输入并尝试将来自 datagridview 的输入序列化为 JSON.
到目前为止我有:
private void button2_Click(object sender, EventArgs e)
{
string output = JsonConvert.SerializeObject(this.dataGridView1);
System.IO.File.WriteAllText("json.json", output);
}
然而,在尝试序列化 datagridview 时似乎出了点问题(之前我的印象是任何对象都可以转换?)。这是否意味着我必须先将 datagridview 转换为数组或列表或类似的东西才能序列化它?
您只想转换数据,而不是 windows 表单控件。
我建议创建一个 class 代表 DataGridView
中的一行信息
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
然后创建集合并将其分配给DataGridView.DataSource
public partial class YourForm : Form
{
private readonly BindingList<Person> _data;
public YourForm()
{
InitializeComponent();
// Create empty collection/datasource
_data = new BindingList<Person>();
// This line will generate columns automatically if
// DataGridView.AutoGenerateColumns = true (by default it is true)
this.yourDataGridView.DataSource = _data;
}
}
以后可以序列化
private void button1_Click(object sender, EventArgs e)
{
string output = JsonConvert.SerializeObject(_data);
System.IO.File.WriteAllText("json.json", output);
}
始终序列化数据本身而不是视图。
在这种情况下,您必须序列化 DataGridView
的 DataSource
属性。
我的 Windows 表单应用程序上有一个 datagridview,它接受用户的输入。我想使用 JSON 来存储此输入并尝试将来自 datagridview 的输入序列化为 JSON.
到目前为止我有:
private void button2_Click(object sender, EventArgs e)
{
string output = JsonConvert.SerializeObject(this.dataGridView1);
System.IO.File.WriteAllText("json.json", output);
}
然而,在尝试序列化 datagridview 时似乎出了点问题(之前我的印象是任何对象都可以转换?)。这是否意味着我必须先将 datagridview 转换为数组或列表或类似的东西才能序列化它?
您只想转换数据,而不是 windows 表单控件。
我建议创建一个 class 代表 DataGridView
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
然后创建集合并将其分配给DataGridView.DataSource
public partial class YourForm : Form
{
private readonly BindingList<Person> _data;
public YourForm()
{
InitializeComponent();
// Create empty collection/datasource
_data = new BindingList<Person>();
// This line will generate columns automatically if
// DataGridView.AutoGenerateColumns = true (by default it is true)
this.yourDataGridView.DataSource = _data;
}
}
以后可以序列化
private void button1_Click(object sender, EventArgs e)
{
string output = JsonConvert.SerializeObject(_data);
System.IO.File.WriteAllText("json.json", output);
}
始终序列化数据本身而不是视图。
在这种情况下,您必须序列化 DataGridView
的 DataSource
属性。