如何禁止DataGridView点击列标题排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何禁止DataGridView点击列标题排序相关的知识,希望对你有一定的参考价值。

控件下拉列表那里找到“编辑列”,进去后在”选定的字段“点击一个字段,找到”SortExpression“ 填写“列字段名 DESC或者/ASC(升序或降序)”
不过这样写只能点击一次排序,你要找到绑定控件里的Sorting事件
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

if (ViewState["Sort"].ToString() == "1")

e.SortExpression = "你的字段名 DESC";
ViewState["Sort"] = "0";

else
e.SortExpression = "你的字段名 ASC";
ViewState["Sort"] = "1";


protected void Page_Load(object sender, EventArgs e)

if(!IsPostBack)
ViewState["Sort"] = "1";//页面加载时先初始化



参考技术A 编辑列-->选定列-->行为-->SortMode-->NotSortable

或者代码里面设置

1
2
3
4

for (int i = 0; i < this.dataGridView1.Columns.Count; i++)

this.dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
本回答被提问者采纳

c#字典dictionary绑定datagridview如何排序

double m;
Dictionary<int, double> dic = new Dictionary<int, double>();
m = 0.26531 * sim1 + 0.22449 * sim2 + 0.18367 * sim3 + 0.14286 *sim4 +0.10204 * sim5 + 0.06122 * sim6 + 0.0041 * sim7;
dic.Add(int.Parse(tl.GetValue(0).ToString()), m);
BindingSource bs = new BindingSource();
bs.DataSource = dic;
this.dataGridView1.DataSource = bs;
this.dataGridView1.Columns[0].HeaderText = "Gid";
this.dataGridView1.Columns[1].HeaderText = "相似度";

如何对“相似度”列进行排序??请高手指点!谢谢!

Dictionary排序

Dictionary<int, string> list = new Dictionary<int, string>();//实例化一个字典

            Random rd = new Random();//为了更加真实,创建一个生成整数的随机数生成器

            int id = 0;

            List<int> idlist = new List<int>();//用来生成100个整数,并存放到列表里idlist

            for (int i = 0; i < 100; i++)

            

                id = rd.Next(1, 100);

                idlist.Add(id);

            

            //遍历列表idlist,并加入字典list

            foreach (int item in idlist)

            

                if (!list.ContainsKey(item))

                

                    list.Add(item, "字典排序测试");

                

            

            //实现排序的关键方法,可以声明一个key-value结构的集合数组,这里用了List,只要符合key-value结构的数据结构都可以,

            //然后利用字典的OrderBy(升序)、OrderByDescending(降序)方法轻松实现排序功能

           //通过过linq也可以实现:var result = from pair in dic orderby pair.Key select pair

            List<KeyValuePair<int, string>> lstorder = list.OrderByDescending(c => c.Key).ToList();

            DataTable dt = new DataTable();

            dt.Columns.Add("编号");

            dt.Columns.Add("内容");

            foreach (KeyValuePair<int, string> item in lstorder)

            

                dt.Rows.Add(item.Key, item.Value);

            

            this.dataGridView1.DataSource = dt;//用DataGridView来展示结果

效果如下

参考技术A Dictionary<int, double> dic = new Dictionary<int, double>();
dic.OrderBy(t=>t.Value); // 顺序
或者dic.OrderByDescending(t=>t.Value); // 倒序

注:需要引用System.Linq命名空间。

以上是关于如何禁止DataGridView点击列标题排序的主要内容,如果未能解决你的问题,请参考以下文章

C#datagridview排序问题

c# datagridview按数字排序

如何禁止datagridview列顺序自动改变位置

C# winform 中datagridview ,如何实现点击列头,对应的列自动排序。

datagridview 点击列标题排序

数据库 C# datagridview可不可以让某一列禁止被更改