我正在构建一个简单的工具来编辑分号分隔的值文件,我使用datagridview来显示和编辑数据。当我在datagridview中显示数据时,最后一行中的文本显示得很糟糕,这很奇怪,因为最后一行应该是空的。当camel-archetype-java
为true时会发生这种情况。当我将此属性设置为false时,最后一行显示正确,但我希望能够向datagridview添加行。我尝试通过单击按钮添加空行然后执行以下代码行来完成此操作:AllowUserToAddRows
其中DataTable的类型为DataGridView,但同样的渲染问题再次发生。在这两种情况下,当我单击错误呈现的行并单击其他行时,我会在DataTable.Rows.Add();
上获得ArgumentOutOfRangeException
。这是DataGridView中的一个错误,如果有的话,是否有解决方法,我可以在DataGridView中加载基于文本的分号分隔值文件并能够为其添加行?或者我是否需要更改某些属性?
答案 0 :(得分:1)
首先,您需要将文件正确转换为DataTable
。
然后将DataSource
的{{1}}设置为使用该文件加载的数据表。将DataGridView
设置为true,然后将AllowUserToAddRows
保存回文件。
示例强>
我们这里说的是文件内容:
DataTable
我们希望将其显示在Column1;Column2
a1;b1
a2;b2
a3;b3
中,如下所示:
DataGridView
您可以使用以下代码简单地加载和保存数据:
| Column1 | Column2 |
|=============|============|
|a1 |b1 |
|-------------|------------|
|a2 |b2 |
|-------------|------------|
|a3 |b3 |
|-------------|------------|
| | |
|-------------|------------|
的LoadFile
DataTable dt;
string fileName = @"d:\file1.txt";
private void Form1_Load(object sender, EventArgs e)
{
dt = LoadFile(fileName);
this.dataGridView1.DataSource = dt;
}
private void SaveButton_Click(object sender, EventArgs e)
{
SaveFile(dt, fileName);
}
SAVEFILE
DataTable LoadFile(string fileName)
{
var dt = new DataTable();
var lines = System.IO.File.ReadAllLines(fileName);
if (lines.Count() == 0)
return dt;
lines.First().Split(';').ToList().ForEach(x =>
{
dt.Columns.Add(new DataColumn(x));
});
lines.Skip(1).ToList().ForEach(x =>
{
dt.Rows.Add(x.Split(';'));
});
return dt;
}