- - PR -
DataGridViewで特定の行を選択させるには
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-01-07 00:33
Visual Studio 2005 でC#、SQL Server 2005 Express です。
DataTable Area の列には、 TEXT型[地域]、Int[地域ID]、TEXT[地名]、Int[地名ID]列があります。 [地域ID]、[地名ID]ともに一意の列です。 Area はORDER BY[地域ID]、[地名ID]となっています。 DataView dv = Tables["Area"].DefaultView; DataGridView1.DataSource = dv; です。 ここで、DataGridView1を[地域ID]、[地名ID]のままで、 ある特定の[地名ID]を選択したいのです。 dv.Sort = "地名ID"; としては、DataView dv が地域、地名順に並べられているので、 特定の行をDataGridView1 のCurrentCellとすることができません(ですよね?)。 かといって、 DataGridView1 のDataSourceが地域、地名順のtblでなく、dvであるので dv.Sort = "地名ID"として検索結果をCurrentCellとすることもできません(ですよね?)。 一方、 DataTable tbl = new DataTable(); tbl = ds.Tables["Area"]; tbl.PrimaryKey = new DataColumn[] { object[] objectCreteria = new object[] { 地域ID, 地名ID}; DataRow row = tbl.Rows.Find(objectCreteria); としたところで、これを利用してDataGridViewで特定の行を選択させることもできず、 結局、どうすればよいのか途方に暮れている状態です。 要は、地域、地名順になっているDataGridView1で、特定の地名を選択させたいだけなのです。 わかりにくい質問で申し訳ありませんが、 こんな風な質問で、質問の内容を分かっていただけるでしょうか? おわかりならば、ぜひご教授いただきたいのです。 |
|
投稿日時: 2008-01-08 00:23
妙な質問で申し訳ありません。
行番号を取得できないDataViewを利用して、 DataGridViewのCurentCellで特定の行を選択しようとすること自体が おかしいでしょうか? |
|
投稿日時: 2008-01-08 01:51
行を選択するのに CurrentCell は確かにおかしいですね。
DataGridView.Rows から順次地域ID の Cell の値を取得して調べていけばいいんじゃないですか? 見つかったら DataGridViewRow.Selected を設定。 DataGridView のカラムから ID を削除している場合でも、DataGridViewRow.DataBoundItem で DataRowView が取得できます。 データソースに BindingSource を使えば Find 一発とかもできたりしますが。 |
|
投稿日時: 2008-01-12 19:43
ありがとうございます。
「DataGridView.Rows から」順次しらべることで、 DataGridViewのCellを選択させることができました。 そういう方法があることが分かって安心しました。 が、欲を言えば、順次調べるのはなんだか遅いのを 我慢しているようで、ちと避けたいところです。 「データソースに BindingSource を使」 って、一発検索といきたいところですが、その方法については、 別途確かめてみようと思います。 |
1