Как создать Datagridview на вкладке в цикле в C # - PullRequest
0 голосов
/ 29 октября 2018

Я занимаюсь разработкой проекта, в котором мне нужно прочитать несколько CSV-файлов и просмотреть в DataGrid. Теперь здесь проблема в том, что если есть 5 файлов, мне нужно создать 5 разных вкладок для просмотра в Datagrid, что я не могу сделать. Вот мой код:

       DataSet ds = new DataSet();
        foreach (String file in openFileDialogCSVFilePath.FileNames)
        {
            string fileLocation = file;
            string fileName = Path.GetFileName(@fileLocation);
            CsvReader reader = new CsvReader(fileLocation);
            ds = reader.RowEnumerator;
        }
        dGridCSVdata.DataSource = ds;
        dGridCSVdata.DataMember = "The Data";

Кто-нибудь может мне помочь, как я могу это сделать? Заранее спасибо.

UPDATE:

Я хочу создать Tab pro грамматически.

1 Ответ

0 голосов
/ 29 октября 2018

Вот фрагмент кода. Итак, у меня есть TabControl tabControl1 с одной вкладкой.

Шаг 1. Считайте и получите общее количество файлов и сохраните путь к файлу в List<string>

Шаг 2: на основе количества файлов Генерируйте TabPage.

Шаг 3. Считайте файл CSV и сохраните его в Datatable

Шаг 4: Для TabPage добавьте DataGridView и сопоставьте его DataSource с DataTable

Обратите внимание, что это не проверено.

private void frmMain_Load(object sender, EventArgs e)
    {
        //Get Total Number of File to create Total Tab
        //Pass the count in the for loop
        //Store the File Path of Each File in List<string> lstFilePath

        for (int i = 0; i < 5; i++) //i< lstFilePath.Count
        {
            //Create Tab Programatically
            this.tabControl1.TabPages.Add("Tab Page"+ (i+1).ToString());                

            //Create DataTable to read and Store the CSV File Data
            DataTable Dt = new DataTable();

            //Based on the i value get the File Path from lstFilePath 
            //and pass it to Function below

            Dt = ConvertCSVtoDataTable("");               
            DataGridView grid = new DataGridView();
            this.tabControl1.TabPages[i].Controls.Add(grid);
            grid.DataSource = Dt;
        }
    }

    public static DataTable ConvertCSVtoDataTable(string strFilePath)
    {
        DataTable dt = new DataTable();
        using (StreamReader sr = new StreamReader(strFilePath))
        {
            string[] headers = sr.ReadLine().Split(',');
            foreach (string header in headers)
            {
                dt.Columns.Add(header);
            }
            while (!sr.EndOfStream)
            {
                string[] rows = sr.ReadLine().Split(',');
                DataRow dr = dt.NewRow();
                for (int i = 0; i < headers.Length; i++)
                {
                    dr[i] = rows[i];
                }
                dt.Rows.Add(dr);
            }

        }

        return dt;
    }
...