2012-02-20 454 views
1

linq2sqlを使用してDataGridviewにレコードを追加し、グリッドを更新しています。リフレッシュした直後に、行選択が上に移動します。最近追加されたレコードをどのように強調するように言いますか?C#プログラムでDataGridViewの行選択を変更する方法

これが役立つかどうかわかりませんが、選択した行のpkを調べるために使用しているコードを以下に含めました。私がしたいことは逆のものです。おかげ

 //get selected row index 
     int index = this.dataGridView1.CurrentRow.Index; 
     //get pk of selected row using index 
     string cellValue = dataGridView1["pkColumn", index].Value.ToString(); 
     //change pk string to int 
     int pKey = Int32.Parse(cellValue); 
+0

グリッドがデータバインドされているか、grid.Rowsに直接行を挿入していますか? –

+0

グリッドがデータバインドされています –

答えて

4

あなたは新しいアイテムが追加され、いつでも、それはリストの一番下に表示されなければならないことが事前にわかっている場合は、使用できます。

int index = this.dataGridView1.Rows.Count - 1; 
    this.dataGridView1.Rows[index].Selected = true; 
    this.dataGridView1.FirstDisplayedScrollingRowIndex = index; 

をしかし、あなたのためのリストを実行した場合他の列の場合は、希望の結果を得ることはできません。

私はあなたが選択する必要がある行インデックスを検索することをお勧めします。これは、関数によって実行できます。int SearchRowIndexForPKValue(int pKey)と言うと、列のセル値内でルックアップを実行します行インデックスを返すPK/ID("pkColumn")が含まれています。

int index = SearchRowIndexForPKValue(pKey); 
    this.dataGridView1.Rows[index].Selected = true; 
    this.dataGridView1.FirstDisplayedScrollingRowIndex = index; 

EDIT:int SearchRowIndexForPKValue(int pKey)DataGridViewの既存の組み込みの方法ではないような方法では、上記のコードは次のようになります必要があります。宣言してコード内に実装する必要があります。メソッドの本体については、this postからコードを取得することができます。

+0

SearchRowIndexForPKValueが現在のコンテキストに存在しません。 –

+1

確かにAdam355はDataGridViewの関数ではなく、.NETフレームワークライブラリの関数でもありません。 LINQを使用している場合は、[こちら](http://stackoverflow.com/questions/2995970/how-to-find-the-row-id-from-datagridview-given-a-rowvalue)をご覧ください。既知のセル値に基づいて行インデックスを取得するために必要なコードが見つかります。 –

+1

ご協力ありがとうございます –

関連する問題