C# 保存DataGridView

C# 保存DataGridView,c#,file,datagridview,save,C#,File,Datagridview,Save,我将两个文件打开到两个单独的DGV中。。一旦打开并单击“格式”按钮,它将匹配两个单独DGV中的所有行,并将其复制到新DGV中 第一个DGV如下所示(列标签): 第二个DGV看起来像这样: PkgStyle P/D Feeder Vision Speed Machine Width Time Name P/N X Y Rotation PkgStyle PkgStyle P/D Feeder Vision

我将两个文件打开到两个单独的DGV中。。一旦打开并单击“格式”按钮,它将匹配两个单独DGV中的所有行,并将其复制到新DGV中

第一个DGV如下所示(列标签):

第二个DGV看起来像这样:

PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
Name    P/N    X    Y    Rotation    PkgStyle    PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
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
这两个文件将匹配PkgStyle并将其余行连接在一起,以获得第三个DGV,如下所示:

PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
Name    P/N    X    Y    Rotation    PkgStyle    PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
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
现在,正如您所预期的,可能存在不正确匹配的行,并且无法合并两个文件中的两组行。如果是这种情况,它将只输入第一个文件中的信息,而不是第二个文件中的信息

因此,一些示例数据可能如下所示:

PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
Name    P/N    X    Y    Rotation    PkgStyle    PkgStyle    P/D   Feeder    Vision    Speed    Machine    Width    Time
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
所以 第三行(不包括列标题)中有空白单元格。当用户更改这些空白点中的单元格数据时,我希望将其添加到已经包含类似数据的文本文档中。所以,若用户将
456 someITEM 4 1 UNI2 9MM 10MS
添加到DataGridView的空白行中,我想将其添加到已经包含数据的文件的末尾。我只想在每行的所有列单元格都已填充的情况下添加行。输出只能用空格分隔


有人能帮我吗?

您可以使用此链接通过一些修改来检查所选单元格是否为空/空:

我假设3个数据网格:dg1,dg2,dg3。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();
}
希望这有帮助

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);
}