• 締切済み

DataGridView の sort

DataGridView の sort メソッドなどで特定の列のソートを指定していると時、セルの内容を編集するたびに勝手にソートが起こってしまいます。これを止める方法はありますか? できそうで出来ないのです。 つまり、どの列にもソートが設定されていない最初の状態にしたいのです。SortedColumnプロパティは、ReadOnlyで設定できず、sort メソッドの引数にNothingを入れることもできません。。。 いったいどうしたら解除できるのですか??? お願いします!!

  • mshs
  • お礼率76% (29/38)

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

その列の変数のSortModeをNotSortableに変更すればソートされないようです ただし、ヘッダーをクリックして一度ソートしてしまった後では効果が無いようです Form_Loadイベントなどで myColumn02.SoteMode = DataGridViewColumnSortMode.NotSortable などと設定しておくと myColumn02で登録された列ではヘッダーをクリックしてもソートされません BindingSourceがDataGridViewのDataSourceなら BindingSourceのSortプロパティを Nothingにすればソートを解除できますよ

mshs
質問者

お礼

やっぱりDGV上でのソートはあきらめました。 ソートしたものをDBから持ってくるようにしようと思います。 ありがとうございました。

関連するQ&A

  • DataGridViewのソートを止めたい

    いくつか同じ質問は見受けられましたが、自分の環境ではどれも解決に至っていなく困っていますので、質問させてください。 DataGridViewのDataSourceにDataTableを設定して使っています。 このDataGridViewは、編集もできソートもできます。ただ、ソートは、ヘッダをクリックした時など、ユーザーが意図したときだけ起きて欲しく、例えばソート列の値を編集したときなどに、勝手に位置が変わってしまします。 これを、止める方法はないのでしょうか。しかも、それまでに任意のソートを繰り返した後の、編集を加える直前の順番を保ったままです。 ソートを解除するという方法がありましたが、ユーザーが編集直前までに整えた順番をクリアして、最初の状態に戻してしまいます。それでは、都合が悪いのです。 本当に困り果てています。どうか、分かる方教えていただけませんか?

  • DataGridViewで選択行が変わるタイミングでソートが起こる

    編集中に勝手に起こるソートを止めるために、編集直前の行の順番を記録するための専用の列を1つ作り、編集直前の順番をそこに記録して(上から、1,2,3,4と・・・)、その列の値で昇順ソートしているという状態を作ろうと考えました。 すると、その列に設定した連番どおりに正しくソートが行われません。ソートをしたのに、例えば、上から1,2,7,3,4などとおかしな順番でソートされます。そして、そのおかしな順番の行を選択して、その後その選択が外れた瞬間に、7が正しい位置に戻ります。どういうことですか? セルが移動した瞬間に、値が反映されているような気がしたので、commiteditとかupdateとか思いつく限りの反映させそうな方法はとったのですが、何をやってもダメです。カーソルを移動させていき、その行を通過した瞬間に、正しい位置に移動します。 解決法を教えていただけないでしょうか?お願いします。

  • VB2005 DataGridViewの編集不可項目にただちに入力する方法はありますか?

    vb2005で開発中です。 DataGridViewのセルが Me.DataGridView1.CurentCell.ReadOnly = True で、編集不可としています。その項目にカーソルがある状態で、入力を開始したら、編集可能となり、その値がただちに反映させる方法はありますでしょうか? ・なにかキーを一度押して(KeyPress)から、 Me.DataGridView1.CurentCell.ReadOnly = False にする方法ならば、簡単ですが、そのなにかキーを押す手間を省きたいです。 ・また、なぜ一度 Me.DataGridView1.CurentCell.ReadOnly = True の状態にしたいかというと、 Me.DataGridView1.CurentCell.ReadOnly = False Me.DataGridView1.BeginEdit(True) で、編集可能し、全体を選択した状態で、右矢印を押すと、文字の最後にカーソルが来てしまい、次のセルに移動しないからです。 つまり、やりたいことは、セル上にカーソルがある時、右矢印を押したら、右のセルに移動。また、セル上にカーソルがある時、直接入力したいのです。 他の方法でも何かいい方法がありましたら、お教え下さい。 よろしくお願いいたします。

  • IE8から読んだ表をソート

    excel2003で、ネットのIE8の表データをコピーしてexcel編集からペーストしたあと、 列Dでソートしようとしましたが、セルが結合しているからできない。結合を解除しなさい とエラーになりました。 ・どのセルが結合しているかの確認方法。 ・すべての結合を解除する方法(ネットで検索しましたが、解除すべき場所の指定を促されたが、場所は不明) ・IE8から読み込んだだけではソートはできないのでしょうか。 windowsXPです。

  • VB2005 DataGridviewのチェックボックス制御について

    DataGridviewのチェックボックス列の個々のチェックボックスについて、 Enabledプロパティのような値を設定して、 使用可/不可を制御したいのですが、方法がわかりません。 教えていただけないでしょうか? 最初、DataGridViewCheckBoxCellのVisibleプロパティが 参照/設定できるとヘルプに書いてあったので、 ひとまずこれで代用しようと思ったのですが、 コードを打ち込んだら「参照のみ」といわれ、 仕方なく今はReadOnlyプロパティを使っています。 よろしくお願いいたします。

  • vb.netでDataGridViewの背景色の変更について

    初心者ですがよろしくお願いします。 現在DataGridViewにデータを表示できたのですが 背景色の変更ができません。 '編集したDataTableをDataGridViewにセットする DataGridView.DataSource = dt 'DataGridViewにユーザーが新しい行を追加できないようにする DataGridView.AllowUserToAddRows = False '行ヘッダーを非表示にする DataGridView.RowHeadersVisible = False 'DataGridViewの1番目の列を読み取り専用にする DataGridView.Columns(0).ReadOnly = True 'DataGridViewの2番目の列を読み取り専用にする DataGridView.Columns(1).ReadOnly = True 'DataGridViewの3番目以降の列のセルのテキストの配置を上下中央で右寄せする For dateIndex As Integer = 0 To monthList.Count - 1 DataGridView.Columns(2 + dateIndex).DefaultCellStyle.Alignment = _ DataGridViewContentAlignment.MiddleRight Next 'インデックス0の行のセルの背景色を薄い灰色にする DataGridView.Rows(0).DefaultCellStyle.BackColor = Color.LightGray と記述しております。 Rowsの部分をCulumsに変えると縦の色を変えることはできるのですが 何故かRowsだと横の色が変化しません 環境としましては Microsoft Visual Basic 2008 Express Edition VB.NET です ご教授、よろしくお願いします。

  • VB2005 DataGridView上でクリックを無効にする方法はありますか?

    いつもお世話になっています。 VB2005で開発中です。 DataGridViewの編集可能(readonly=false)のセルに対して、クリックを無効とする方法がありますでしょうか? そのセルに対して、ダブルクリックした時のみ、処理を行いたいのです。 よろしくお願いいたします。

  • DataGridViewのToolTipText

    お世話になります。 現在、VB2008にてWindowsフォームの作成をしているのですが、 DataGridViewのプロパティで、各列ごとにToolTipTextを 設定しているのですが、 実際に表示されるのは、列のヘッダーにカーソルが当たっている 時のみでCellにあたっている場合は表示されません。 ヘッダーのみでなく、指定した列のCellにカーソルがあたった場合に ToolTioTextを表示したいと考えているのですが、 どなたか、やり方のわかる方いらっしゃらないでしょうか。 もしかしたら、プロパティで解決できるかもしれないのですが、 いろいろ検索してわからなかったので、質問させていただきました。 何卒、よろしくお願いします。

  • DataGridViewで、選択した行の値を取得したい。

    VB2005環境です。 VB2005で、選択した行の、特定の列から値を取って、 テキストボックスに出力したいと思っています。 Itemプロパティかと思い、 TxtBox1.Text = Me.DataGridView1.Item _(0,Me.DataGridView1.CurrentRow.Index).ToString と記述してみました。1列目の、選択した行と交わるセルの 値が取れるかと思いきや、うまく取得できません。 方法を教えていただけないでしょうか? よろしくお願いします。

  • DataGridViewで指定したセルに書き込み

    こんばんは。 VB2008のDataGridViewで指定したセルに書き込みをする方法はありますか? 例えば(2,1)と指定して1行目2列目に「Hello」と書き込む感じです。 どなたか知っている人が教えてください。

専門家に質問してみよう