0

Janus GridEX を 2 つ持っています。特定のボタンがクリックされたときに、最初のグリッドの行を別のグリッドに追加したい。しかし、これらの行が 2 番目のグリッドに存在しないことを確認したいので、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