Datatable заменит неправильный ряд на ноль - PullRequest
0 голосов
/ 09 марта 2020

Изображение ниже является результатом DataTable. Я использовал RemoveEmptyEntries, чтобы удалить все пробелы. Поскольку я использую текстовый файл, теперь моя главная проблема заключается в том, что если некоторые данные в определенных строках отсутствуют, то отсутствующие строки будут заменены данными строк из следующего индекса строки.

datatable result

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        // Datatable 
        DataTable dt = new DataTable();

        /// DB connection

        string filepath = @"C:\Users\2563911\source\repos\test1.txt";
        using (System.IO.TextReader tr = File.OpenText(filepath))
        {
            string line;

            while ((line = tr.ReadLine()) != null)
            {

                if (!line.StartsWith("-"))
                {
                    if (line.Length < 82 || line.Contains("MY01"))
                    {

                        string[] items = line.Replace("MY01", "").Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                        try
                        {
                            if (dt.Columns.Count == 0)
                            {
                                // Create the data columns for the data table based on the number of items
                                // on the first line of the file
                                for (int i = 0; i < items.Length; i++)
                                {
                                    dt.Columns.Add(new DataColumn("Column" + i, typeof(string)));

                                }
                             }

                            dt.Rows.Add(items);
                            foreach (DataRow dr in dt.Rows)
                            {
                                if (!dr[4].Equals("1"))
                                {

                                }

                            }                                
                        }

                        catch (System.ArgumentException c)
                        {
                            MessageBox.Show(c.Message);
                            break;
                        }
                    }
                }

            }
            //show it in gridview
            dt.Columns.RemoveAt(1);
            this.DataGridView.DataSource = dt;
        }
    }
}

Однако, что я должен сделать, чтобы изменить этот сегмент if (!dr[4].Equals("1")), чтобы получить приведенный ниже результат, как показано ниже?

  • CISCO 08-072 08-0729-01 1 EA
  • CISCO 08-072 08-0729-01 1 EA
  • CISCO 08-072 08-0729-01 1 EA
  • CISCO 10-291 10-2919-01 1 EA
  • CISCO 10-299-01 $ 1 10-2919-01 1 EA
  • CISCO 10-299-01 $ 1 10-2919- 01 Null EA
...