我需要帮助将两个不同的行(具有相同的列)添加到同一数据表中

时间:2019-03-12 19:02:44

标签: c# datagridview datatable row datagridviewcolumn

在Windows窗体应用程序上工作,该应用程序从csv文件中读取数据并将数据添加到Datagridview。我遇到了一个问题,所有行都添加到了datable并显示在datagridview上。 datagridview显示前两个条件(如果有条件)和OneRow(仅条件)的数据行。如果datable和datagridview行填充有条件行OneRow,则它将不添加来自twoRow条件的行。但是我希望显示来自OneRow和TwoRow的行。当我在OneRow if条件中注释(/ ** /)时,TwoRow中的行也会填充datatable和datagridview。但是我都需要填充表格。预先感谢!

        Construct.MainDataTable.Columns.Add("Date", typeof(DateTime));
        Construct.MainDataTable.Columns.Add("Time");
        Construct.MainDataTable.Columns.Add("Serial");
        Construct.MainDataTable.Columns.Add("Type");
        Construct.MainDataTable.Columns.Add("level");
        Construct.MainDataTable.Columns.Add("price");
        Construct.MainDataTable.Columns.Add(" Limit");
        Construct.MainDataTable.Columns.Add("last Limit");
        Construct.MainDataTable.Columns.Add("Data");
        ..........................
    ...............................................
        DataRow oneRow = Construct.MainDataTable.NewRow();
        DataRow twoRow = Construct.MainDataTable.NewRow();
        dataGridView2.AllowUserToAddRows = false;

        if (line.Split(',')[2].Equals("Time"))
        {
         time = line.Split(',')[3];
         date = line.Split(',')[1];
         }
        if (line.Split(',')[2].Equals("Level"))
        {
         level = line.Split(',')[3];

         }
        //OneROw(IF condition)
        if ((Convert.ToDecimal(line.Split(',')[8])) < (Convert.ToDecimal     (line.Split(',')[12]))) 
        {

          type = line.Split(',')[1];
          serial = line.Split(',')[7];
          price = line.Split(',')[3];
          Limit = line.Split(',')[8];
          lastLimit = line.Split(',')[10];
          Data = line.Split(',')[12];

          oneRow["Date"] = date;
          oneRow["Time"] = time;
          oneRow["Serial"] = serial;
          oneRow["Type"] = type;
          oneRow["level"] = level;
          oneRow["price"] = price;
          oneRow[" Limit"] = Limit;
          oneRow["last Limit"] = lastlimit;
          oneRow["Data"] = Data;
          Construct.MainDataTable.Rows.Add(oneRow);
         }  
       //TwoROw(IF condition)                             
        if ((line.Contains('"')) && ((line.Contains("NG"))))
        {
          price = line.Split(',')[3];
          type = line.Split(',')[1];
          serial = line.Split(',')[7];
          Limit = line.Split('"')[7];
          var valLimit = Limit.Split(',').Select(a => Convert.ToInt32(a, 16));
          var limitJoin = String.Join(",", valLimit);
          lastlimit = line.Split('"')[1];
          var vallastLimit = lastlimit.Split(',').Select(d => Convert.ToInt32(d, 16));
          var lastJoin = String.Join(",", vallastLimit);
          Data = line.Split('"')[5];
          var valDatas = Data.Split(',').Select(s => Convert.ToInt32(s, 16));
          var dataJoin = String.Join(",", valDatas);
          twoRow["Date"] = date;
          twoRow["Time"] = time;
          twoRow["Serial"] = serial;
          twoRow["Type"] = type;
          twoRow["level"] = level;
          twoRow["price"] = price;
          twoRow["Limit"] = limitJoin;
          twoRow["last Limit"] = lastJoin;
          twoRow["Data"] = dataJoin;
          Construct.MainDataTable.Rows.Add(twoRow);
          }
         dataGridView2.DataSource = Construct.MainDataTable;

0 个答案:

没有答案