我创建了一个带有datagridview的软件。它可以保存来自datagridview的所有数据。但问题是数据,如果用户不在一个单元格中插入数据,软件就会崩溃。我怎么验证这个?我使用以下代码保存dgv内容:
//Write in file
StreamWriter ecriture = new StreamWriter(tes, true);
for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
ecriture.Write("\t"+dataGridView1.Rows[i].Cells[j].Value.ToString()+"\t"+"|");
}
ecriture.WriteLine("");
}
ecriture.Close();
我希望你能帮助我:) 感谢法国
答案 0 :(得分:0)
您应该创建一个数据模型,只是一个包含与数据网格列对应的属性的类。
public class MyModel {
public string prop1 {get;set;}
}
然后将BindingList<MyModel>
绑定到您的网格中:
dgv.DataSource = myList;
然后使用该对象列表从网格获取数据,而不是从单元格中读取文本或值。
您可以随时检查单元格是否具有VALUES等,但这不是非常面向对象的方法,并且当您想要重新排序列时代码更改也非常难以维护。
要阅读的内容:
https://msdn.microsoft.com/en-us/library/y0wfd4yz(v=vs.110).aspx
Binding List<T> to DataGridView in WinForm
如果您仍想按照自己的方式行事,请确保该链中的所有元素都不为空。
dataGridView1.Rows[i].Cells[j].Value.ToString()
如果具有该索引的Row不存在,则IndexOutOfRangeException
与给定索引的列相同。如果单元格存在但是为空,则其Value
为NULL,然后您获得NullReferenceException
,因为您无法对空对象执行ToString
。