質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

8920閲覧

DataGridViewで表示されている表の列をソートされた状態の表の取得と列の追加をしたい

milkwalking

総合スコア60

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2019/05/10 02:40

前提・実現したいこと

やりたいこと1
DataGridViewで表示されている表をソートした際に
ソートされた状態の表を取得したいです。
やりたいこと2
そしてソートされた状態のテーブルに列を新しく追加したです。

C#

1DataTable dt = new DataTable(); 2 3//ここでdtにSQLで取得した表をいれる(今回は省略) 4 5//GridはDataGridView 6Grid.DataSource = dt; 7 8//Gridがソートされるイベント 9private void Grid_Sorted(object sender, EventArgs e) 10 { 11 //ここでGrid.dataviewでソート後の表は取得できるでしょうか。 12           dt = Grid.dataview; 13 } 14 15

補足情報(FW/ツールのバージョンなど)

■質問環境
言語はC#
Windows Formを使用してアプリを作成中です
SQLサーバー
Microsoft SQL Server 2014 - 12.0.2269.0 (X64)
Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 17763: )

VisualStudio2017という環境です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2019/05/10 04:02

何故ソート後の状態が欲しいのかによってアプローチが変わってくるかと思います。 また、列を追加するのはDataGridViewだけなのでしょうか?DataSourceに設定してあるDataTableにも追加するのでしょうか?
退会済みユーザー

退会済みユーザー

2019/05/10 04:12 編集

> ソートされた状態の表を取得したいです。 その「表」というのは何ですか? DataTable? ソートはどういう手段で行っているのですか?
milkwalking

2019/05/10 06:37

YAmaGNZさん ■何故ソート後の状態が欲しいのかによってアプローチが変わってくるかと思います。 →おっしゃるとおりですね、、「ソート後の表に列を追加し、その列を使用してチャートに表示する」というのが目的でした。 ■列を追加するのはDataGridViewだけなのでしょうか?DataSourceに設定してあるDataTableにも追加するのでしょうか? →上記の処理に関してこれが必要か今は判断いたしかねます、、、
milkwalking

2019/05/10 06:40

SurferOnWww様 コメントありがとうございます。 ■その「表」というのは何ですか? DataTable?  →SQLで任意に取得した表です。その表をデータテーブルにいれてDataGridViewで表示させています。 ■ソートはどういう手段で行っているのですか? →ソートはDataGridViewのsortedイベントを利用しております!
退会済みユーザー

退会済みユーザー

2019/05/10 06:52

チャートに表示するというの最終的な目的のようですが、ということは、このスレッド→ https://teratail.com/questions/187207 の話の続きですか? チャートと DataGridView、DataTable、ソートというのがどう考えてもつながりません。失礼ながら、何か勘違いしているということはありませんか?
guest

回答2

0

ソートしても、DataTable は変わりません。
変わっているのは DataTable.DefaultView の方です。

DataTable と DataTable.DefaultView は同じコインの裏と表の関係のようなもので
DefaultView はソートやフィルタ後などの見た目に使われます。
追加や更新などは互いに反映されます。

詳しくはググってください。

投稿2019/05/10 04:09

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

milkwalking

2019/05/10 06:47

コメントありがとうございます。 ベストアンサーにさせていただきたかったのですが、自分で解決を書いたらベストアンサーになってしまうのを知りませんでした。せっかく回答いただいたのに申し訳ありません。。。
Zuishin

2019/05/10 07:19

ベストアンサーは取り消すことができます。
milkwalking

2019/05/13 07:57

Zuishin様 コメントありがとうございます。自分で回答した場合の取り消し方調べてみましたが今まだ見つかってないです。 参考URL ■質問をした後に自己解決してしまった https://teratail.com/help#resolve-myself
Zuishin

2019/05/13 08:08

自分の質問を見てみましたが、変更できなくなっていました。時間が経ちすぎると変更できなくなるのかもしれませんね。
hihijiji

2019/05/13 08:12

質問したことがないのでよくわかりませんが、気持ちは伝わったのでOKです。
milkwalking

2019/05/13 08:57

Zurishin様 わざわざ見ていただいてありがとうございます。以後気を付けます。申し訳ありません。 hihijiji様 質問ばかりしているのに申し訳ありません。以後気を付けますのでどうか今後もよろしくお願いします。;;
guest

0

自己解決

C#

1 2      //dtはすでに表が入った状態 3 //ソート後の表を取得 4 DataView dv = new DataView(dt); 5 dv = ((DataTable)Grid.DataSource).DefaultView; 6 7 //ビューで取得したテーブルをテーブル化する 8 dt = dv.ToTable(); 9 10

上記のコードでソートした状態に入れ替えることができました。
あとは列のための配列用意などで解決できました。

投稿2019/05/10 06:45

milkwalking

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問