在行中填充动态列数据。在Datagrid,Winform中添加

时间:2019-01-10 12:24:55

标签: c# winforms csv datagrid rows

我正在尝试使用从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;
                }
            }

对任何想法都开放,或者不采用其他方法/方法来实现它。

1 个答案:

答案 0 :(得分:0)

您可以使用dataTable.NewRow()创建一个新的空DataRow,然后使用循环将值分配给DataRow,最后使用dataTable.Rows.Add(newDataRow)将DataRow附加到表上。