简体   繁体   English

保存DataGridView

[英]Saving DataGridView

I open two files into 2 seperate DGVs.. Once opened and the button "Format" is clicked, it matches all of the lines in the two seperate DGVs and copies it into a new DGV. 我将两个文件打开成两个单独的DGV。一旦打开并单击“格式”按钮,它将匹配两个单独的DGV中的所有行并将其复制到新的DGV中。

The first DGV looks like this (column labels): 一个 DGV看起来像这样(列标签):

Name    P/N    X    Y    Rotation    PkgStyle

and the second DGV looks like this: 第二个 DGV看起来像这样:

PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time

The two files will match the PkgStyle and concat the rest of the lines together to get the third DGV that looks like this: 这两个文件将匹配PkgStyle并将其余行连接在一起以获得第三个看起来像这样的DGV:

Name    P/N    X    Y    Rotation    PkgStyle    PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time

Now, as you may expect there could be possible lines that do not match properly and will not combine the two sets of lines from the two files. 现在,正如您所料,可能存在不正确匹配的行,并且不会合并两个文件中的两组行。 If this is the case it will only input the information from the first file and not the second. 如果是这种情况,它将只输入第一个文件而不是第二个文件的信息。

So some sample data might look like this: 所以一些示例数据可能如下所示:

Name    P/N    X    Y    Rotation    PkgStyle    PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
J11     1234   12  7     180         9876         9876    THETHING   1        1           1        UNI      12MM     1MS
R90     2222   19  9     0           1255         1255    ITEM       2        1           1        UNI2     5MM      1MS
J18     9845   11  4     270         456
C127    1111   05  1     270         5555         5555    ITEM2      3        1           1        UNI      8MM      0.1MS

SO 所以

The third row (not including the titles of the columns) has blank cells in it. 第三行(不包括列的标题)中有空白单元格。 When the user changes the cell data in those blank spots, I would like to add it to a text document that already contains similar data. 当用户更改这些空白区域中的单元格数据时,我想将其添加到已包含类似数据的文本文档中。 So, if the user added 456 someITEM 4 1 1 UNI2 9MM 10MS to the DataGridView lines that were blank, I want to add that to the end of the a file that already contains data. 因此,如果用户将456 someITEM 4 1 1 UNI2 9MM 10MS添加到空白的DataGridView行,我想将其添加到已包含数据的文件的末尾。 I want to only add the line if all of the column cells are filled in for each row. 我想只在每行填写所有列单元格时添加该行。 The output can just be space delimited. 输出可以是空格分隔的。

Can anyone help me with this? 谁能帮我这个?

You can use this link to check selected cell is null/empty or not with some modification: C# DataRow Empty-check 您可以使用此链接检查所选单元格是否为null /空或不进行某些修改: C#DataRow Empty-check

I suppose 3 datagrid: dg1, dg2, dg3 accordingly. 我想3个datagrid:dg1,dg2,dg3。 Columns of dg3 compose of columns of dg1 and dg2. dg3的列由dg1和dg2的列组成。

public static string GetNewData(DataRow row)
{
  string res = string.Empty;
  if (row == null) throw new ArgumentNullException("row");

  foreach (DataColumn column in dg2.Columns)
    if (row.IsNull(column.ColumnName) || string.IsNullOrEmpty(row[column.ColumnName].ToString()))
      return string.Empty;
    else
      res += row[column.ColumnName] + " ";

  return res.Trim();
}

Hope this help. 希望这有帮助。

foreach (var line in theList)
{
    string pkgStyleNA, PDNA, feederNA, visionNA, speedNA, machineNA, widthNA, timeNA;

    if (line.PkgStyle.Equals(string.Empty))
        pkgStyleNA = "N/A ";
    else
        pkgStyleNA = line.PkgStyle;

    if (line.PD.Equals(string.Empty))
        PDNA = "N/A ";
    else
        PDNA = line.PD;

    if (line.Feeder.Equals(string.Empty))
        feederNA = "N/A ";
    else
        feederNA = line.Feeder;

    if (line.Vision.Equals(string.Empty))
        visionNA = "N/A ";
    else
        visionNA = line.Vision;

    if (line.Speed.Equals(string.Empty))
        speedNA = "N/A ";
    else
        speedNA = line.Speed;

    if (line.Machine.Equals(string.Empty))
        machineNA = "N/A ";
    else
        machineNA = line.Machine;

    if (line.Width.Equals(string.Empty))
        widthNA = "N/A ";
    else
        widthNA = line.Width;

    if (line.Time.Equals(string.Empty))
        timeNA = "N/A ";
    else
        timeNA = line.Time.ToString();

    addToDataBase.Add(pkgStyleNA + " " + PDNA + " " + feederNA + " " + visionNA + " " + speedNA+ " " + machineNA+ " " + widthNA + " " + timeNA);
}

using (StreamWriter outFile = new StreamWriter(openDataBaseFile.FileName, true))
{
    outFile.WriteLine();

    var noDuplicatesList = addToDataBaseList.Distinct().ToList();
    foreach (var item in noDuplicatesList)
        outfile.WriteLine(item);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM