0

我有两个 Janus GridEX。单击特定按钮时,我想将第一个网格的行添加到另一个网格;但我想检查第二个网格中是否已经不存在这些行,所以我将此代码块与 linq 一起使用:

    DataTable dtSelectedRows = new DataTable();
    dtSelectedRows = firstGrid.GetDataSource().Clone();
    foreach (GridEXRow row in rows)
    {
        DataRow dr = ((DataRowView)row.DataRow).Row;
        if (dtSelectedRows.AsEnumerable().Count() > 0)
        {        
            if (dtSelectedRows.AsEnumerable().Where(t => t.Field<Int32>("myColumn") == Convert.ToInt32(dr["myColumn"])).Count() == 0)
            {
                dtSelectedRows.ImportRow(dr);
            }
        }
        else
            dtSelectedRows.ImportRow(dr);

        }
    }
    secondGrid.SetDataSource(dtSelectedRows);

但不幸的是它没有工作,dtSelectedRows 总是空的。所以我被迫将块重写为:

    GridEXRow[] rows = firstGrid.GetCheckedRows();
    DataTable dtSelectedRows = new DataTable();
    dtSelectedRows = firstGrid.GetDataSource().Clone();
    foreach (GridEXRow row in rows)
    {
        if (row.RowType == Janus.Windows.GridEX.RowType.Record)
        {        
            DataRow dr = ((DataRowView)row.DataRow).Row;
            bool rowExists = false;
            foreach (DataRow r in dtSelectedRows.Rows)
            {
                if (Convert.ToInt32(r["myColumn"]) == Convert.ToInt32(dr["myColumn"]))
                {
                    rowExists = true;
                    break;
                }
            }

            if (!rowExists)
                dtSelectedRows.ImportRow(dr);}
    }
    secondGrid.SetDataSource(dtSelectedRows);

幸运的是它刚刚奏效。那么如何更正第一个代码块呢?

4

1 回答 1

0

尝试这个 :

     dtSelectedRows = firstGrid.GetDataSource().AsEnumerable().ToList();

代替 :

     dtSelectedRows = firstGrid.GetDataSource().Clone();
于 2014-03-10T01:20:54.287 回答