C#.NETのサンプルコードを掲載しています。
      
DataGridViewのソートを解除(バインドしたデータ)
すんなり解決できなかったので気になって調べてみました。
やりたいことはDataGridViewにDataTableのオブジェクトをバインド、
DataGridViewのヘッダをクリックしてソートする。画面を再描画するタイミングで
このソートを解除するという動きです。
DataGridViewのソートを解除

button2を押すと画面を再描画します。このタイミングでソートを解除したい!
DataGridViewのソートを解除
↑こんな感じに

再描画するたびにDataTableのオブジェクトを生成してやればソートは解除するんですが
オブジェクトの生成は一回だけなのでこの方法は使えません。。

で色々調べていくうちにBindingSourceを使った回避策を見つけました。
BindingSourceのSortプロパティに""を設定するといいようです。

以下がサンプルになります。
テストコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

using System;
using System.Data;
using System.Windows.Forms;

namespace HP
{
    public partial class Form4 : Form
    {
        DataTable _dt = null;

        public Form4()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            _dt = new DataTable();
            _dt.Columns.Add("A", Type.GetType("System.String"));
            _dt.Columns.Add("B", Type.GetType("System.Int32"));
            _dt.Columns.Add("C", Type.GetType("System.DateTime"));

            for (int i = 0; i < 4; i++)
            {
                DataRow row = _dt.NewRow();
                row["A"] = "文字列を格納";
                row["B"] = i;
                row["C"] = DateTime.Now;
                _dt.Rows.Add(row);
            }
            dataGridView1.DataSource = _dt;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (_dt == null) { return; }

            BindingSource bs = new BindingSource();
            bs.DataSource = _dt;
            bs.Sort = "";
            dataGridView1.DataSource = bs;
        }
   }
}

      






Copyright (C) 2011 - 2017 猫の気ままなC#日記