2

その列の1つ(ID列)の値に基づいてultrawingridの行を選択する方法はありますか?私はこれを行う方法を見つけようとしてきましたが、ほとんど成功していません。

「アクティブID」(つまり、アプリケーション内で現在編集されているID-システムが選択されてアクティブであると見なすID)であるグローバル変数がありますが、グリッドの選択された行と「選択されたID」変数が一致しません。ユーザーの混乱を防ぐために、それらが同じであることを確認する必要があります。私はrefresh()関数内で次のコードを呼び出すことを望んでいます...

おそらく(kinda-pseudo-code-ish)のようなもの:

int index; // This could be any number

foreach (row r in grid)
{
    if (row.cell["ID"].value = index)
        grid.selectedindex = thisRow;
}

私は正しい方向に向かって考えていますか?もしそうなら、正しい構文は何ですか?そうでない場合、他にどのようにこれを行う必要がありますか?

4

4 に答える 4

3

とった。

            int index;
            foreach (UltraGridRow row in grid.Rows)
            {
                if (Convert.ToInt32(row.Cells["ID"].Value) == index)
                {
                    grid.ActiveRow = row;
                    break;
                }
            }

必要な方法で動作します-自分の質問に答えてすみません;)

于 2013-03-06T14:37:37.063 に答える
3

はい。この関数を使用してFirstOrDefault、条件に一致する行を見つけることができます。

var row = ultraGrid1.Rows.FirstOrDefault(r => r.Cells["Id"].Value.ToString() == "1");

これで(潜在的に)セルに必要な値が含まれる行ができたので、それをアクティブにして選択できます。

if (row != null)
row.Activate();
于 2015-12-14T22:10:36.450 に答える
1

キーでアイテムを検索する機能を持つDataTableまたはリストにバインドされている場合は、RowsコレクションのGetRowWithListIndexメソッドを使用してUltraGridRowを検索できます。

たとえば、次のようにすると、キー5で行がアクティブになります。

DataTable dt = this.ultraGrid1.DataSource as DataTable;
DataRow dr = dt.Rows.Find(5);
this.ultraGrid1.Rows.GetRowWithListIndex(dt.Rows.IndexOf(dr)).Activate();

リストがキーによるアイテムの検索をサポートしていない場合は、linqを使用してリスト内のアイテムを検索することもできます。ここにリンク付きのアイテムを見つける例があります。

于 2013-03-07T22:09:29.787 に答える
0

複数のバンドがある場合は、以下を使用できます。

int index;

ultraGrid1.DisplayLayout.Bands.OfType<Infragistics.Win.UltraWinGrid.UltraGridBand>()
    .SelectMany(s => s.GetRowEnumerator(Infragistics.Win.UltraWinGrid.GridRowType.DataRow)
    .OfType<Infragistics.Win.UltraWinGrid.UltraGridRow>())
    .Where(s => s.Cells.Exists("ID"))
    .FirstOrDefault(s => (int)s.Cells["ID"].Value == index)?
    .Activate();

注:ヌル条件演算子(?)には、C#6.0以降が必要です。それ以外の場合は、チェックしてFirstOrDefault(...)!=null、アクティブ化する必要があります。

于 2016-04-23T11:58:25.133 に答える