我正在尝试使用从CSV文件获取的数据填充Datagrid。
但是我希望动态添加列,因为CSV文件中的列数会有所不同。
我不希望在我的“ Rows.Add”中预定义列数,如下-
dataTable.Rows.Add(totalData[0], totalData[1], totalData[2], totalData[3]);
我尝试了另外两种方法,但是没有用。 下面是我的代码-
using (var selectFileDialog = new OpenFileDialog())
{
if (selectFileDialog.ShowDialog() == DialogResult.OK)
{
string filePath = selectFileDialog.FileName.ToString();
StreamReader streamReader = new StreamReader(filePath);
string[] totalData = new string[File.ReadAllLines(filePath).Length];
DataTable dataTable = new DataTable();
//Fill DataGrid Column Names
totalData = streamReader.ReadLine().Split(';');
for(int i=0; i< totalData.Length; i++)
{ dataTable.Columns.Add(totalData[i]); }
//Fill DataGrid DATA
while (!streamReader.EndOfStream)
{
totalData = streamReader.ReadLine().Split(';');
//METHOD 1: Need a Replacement for this. Dont want a predefined it.
dataTable.Rows.Add(totalData[0], totalData[1], totalData[2], totalData[3]);
//METHOD 2: Doesn't Work. Fills the entire data in the very first column
for (int i = 0; i < totalData.Length; i++)
{ dataTable.Rows.Add(totalData[i]); }
//METHOD 3: Doesn't Work. Throws a Null Pointer Exception.
dgDataFromCSV.Rows[0].Cells[0].Value = "test";
}
dgDataFromCSV.DataSource = dataTable;
}
}
对任何想法都开放,或者不采用其他方法/方法来实现它。
答案 0 :(得分:0)
您可以使用dataTable.NewRow()创建一个新的空DataRow,然后使用循环将值分配给DataRow,最后使用dataTable.Rows.Add(newDataRow)将DataRow附加到表上。