尝试将List中的一些数据放到dataGridView中,但是有一些问题。
目前有方法,返回我要求的清单 - 请看下面的图片
码
public List<string[]> ReadFromFileBooks()
{
List<string> myIdCollection = new List<string>();
List<string[]> resultColl = new List<string[]>();
if (chooise == "all")
{
if (File.Exists(filePath))
{
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
StreamReader sr = new StreamReader(fs);
string[] line = sr.ReadToEnd().Split(new string[] { Environment.NewLine },
StringSplitOptions.RemoveEmptyEntries);
foreach (string l in line)
{
string[] result = l.Split(',');
foreach (string element in result)
{
myIdCollection.Add(element);
}
resultColl.Add(new string[] { myIdCollection[0], myIdCollection[1], myIdCollection[2], myIdCollection[3] });
myIdCollection.Clear();
}
sr.Close();
return resultColl;
}
}
....
这将返回给我需要的数据(如数组中的列表)。
在此之后,尝试将其移动到dataGridView,它已经有4个带有名称的列(因为我确定,不需要4个列) - 请参见下面的图片
尝试使用下一个代码将数据放入dataGridView
private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
TxtLibrary myList = new TxtLibrary(filePathBooks);
myList.chooise = "all";
//myList.ReadFromFileBooks();
DataTable table = new DataTable();
foreach (var array in myList.ReadFromFileBooks())
{
table.Rows.Add(array);
}
dataGridViewLibrary.DataSource = table;
}
但结果得到了错误 - “需要更多行存在于dataGridVIew中”,但是符合我所看到的(上图)行q(ty)的q-ty等于List中数组元素的q-ty(4 )。
尝试通过添加额外的临时变量来检查结果 - 但没关系 - 请参见下面的图片
我哪里错了?也许我没有以正确的方式使用dataGridView?
修改
文件示例(简单csv)
11111,作者,姓名,类别
11341,作者1,姓名1,类别1
答案 0 :(得分:2)
在添加行之前,您需要首先添加列到您的DataTable
:
private void radioButtonViewAll_CheckedChanged(object sender, EventArgs e)
{
TxtLibrary myList = new TxtLibrary(filePathBooks);
myList.chooise = "all";
DataTable table = new DataTable();
//add columns first
table.Columns.Add("ID");
table.Columns.Add("Author");
table.Columns.Add("Caption");
table.Columns.Add("Categories");
//then add rows
foreach (var array in myList.ReadFromFileBooks()) {
table.Rows.Add(array);
}
dataGridViewLibrary.DataSource = table;
}
答案 1 :(得分:1)
我觉得你的代码太复杂了。简而言之,如果要从文件中查看表中的所有数据,可以执行此操作
if (!System.IO.File.Exists("file.txt"))
return;
dgvDataGridView.ColumnCount = 4;
dgvDataGridView.Columns[0].HeaderCell.Value = "ID";
dgvDataGridView.Columns[1].HeaderCell.Value = "Author";
dgvDataGridView.Columns[2].HeaderCell.Value = "Caption";
dgvDataGridView.Columns[3].HeaderCell.Value = "Categories";
using (System.IO.StreamReader sr = new System.IO.StreamReader("file.txt"))
while (sr.Peek() > -1)
dgvDataGridView.Rows.Add(sr.ReadLine().Split(','));