- - PR -
GridViewデータの並べ替え
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-09-07 13:34
初心者です。
visualstudio2005でwebプログラムを開発中です。 質問ですが、データベースからGridViewに取り込んだデータをある項目を元に並べ替えたい のですが、出来ますでしょうか。 1 2 3 ----- a b c d e f g h i を 1 2 3 ----- a b c g h i d e f というふうに たとえば、上記の1を基準にして昇順・降順ではなく、aは1番目、gは2番目、dは三番目 という並べ替えを行いたいです。 教えてください。よろしくお願いいたします。 | ||||||||||||
|
投稿日時: 2006-09-07 16:16
DataView の Sort プロパティでは対応できないと思うので、
地道に DataTable から DataRow を取り出して、 条件を元に新しい DataTable を作っていくしかないのかなー | ||||||||||||
|
投稿日時: 2006-09-07 16:34
こんにちは。
「aは1番目、gは2番目、dは三番目」というのはわかりますが、どういった基準 で「aが1番目」で「gが2番目」になるのかがわからないと難しいかもしれません ね。 基本的にはかるあさんの案と同じになりますが、元の DataTable にソート用 のカラムを追加して、それでソートした結果を新しい DataTable に設定するの ではどうでしょう。
こんな感じで。 (4) 列は DB から取得する際は null で取得しておいて、あとから何らかの基準 (私にはわかりませんが)で値付けをしたのちにソートしてあげる感じです。 コードで書くと以下のようになります(検証はしていませんが)。
_________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2006-09-07 17:49
回答ありがとうございます。
並び替えの基準は、 データベースの値を元にGridViewを表示する前に GridView項目のtextを変更して表示しています。 GridView.Rows(X).Cells(Y).Text = "あ" それを基準にしたいのですが... 回答を参考にやってみます。 | ||||||||||||
|
投稿日時: 2006-09-07 19:36
プログラムから直接GridViewに書き込んでるデータで並び替えるんですか? このデータはどういう基準でGridViewに書き込むのでしょうか。 そして、それをどういう基準で並び替えるのでしょうか。 すくなくともここででている話だけではプログラムに記述できそうにないのですが。。。 | ||||||||||||
|
投稿日時: 2006-09-08 08:47
頂いている情報だけでは、並び替えの規則が見えてきませんね。。。
SQLのOrder区では指定できそうにない並び替えのようにも見えますが 実際のところはどうなんでしょうね? GridViewに表示する前に並び替えて構わないのであれば、 SQL文にUnionとか使ったらどうです? | ||||||||||||
|
投稿日時: 2006-09-08 13:44
回答が送れてすいません。
回答ありがとうございます。 説明不足ですいません。 やりたいのは、データベースからデータを取得するのですが、 フォーム上にSqlDataSourceを配置してあり、GridViewはそれをデータソースとしています。 プログラムを実行するとプログラム内でSQLを記述していて、SqlDataSource.SelectCommandに代入します。Page_PreRenderCompleteの後にGridViewのある項目を見て1なら"処理中" 2なら"処理済"、空なら"未処理"とGridViewの内容を書き換えています。 その後GridViewを表示する前に"処理中"、"未処理"、"処理済"の順番で並べ替えを 行いたいと思っています。 | ||||||||||||
|
投稿日時: 2006-09-08 14:53
データベースからデータを持ってくる時点で、
項目の値が1のもの 項目の値が空のもの 項目の値が2のもの という順番になるようにSQL文を工夫するのがいいんじゃないかと思います。 そうすれば自分で並べ替えなんてする必要ないですよね。 |