DataGridView点击排序完成后如何禁止自动排序
Summary: Disable sorting after clicking DataGridView columnheader,Prevent databound DataGridView from sorting while editing!
Problem:I have a databound DataGridView in a WinForms which the user may have sorted by a column. The problem is this: after the user leaves a row after editing a cell in the sorted column, the row is immediately re-sorted.This is very disorienting for users and makes editing groups of rows together impossible.
Solution: re-databound when user start editing, run program, or sorted finish, to do that can disable automatic re-sorting.ting after an initial sort and then only sort again when the user requests it.
/// <summary>
/// 控件状态 When the Program start or stop, we can re-databound dgv to disable re-sorting
/// </summary>
public void ChangeStatus(bool status)
{
Invoke((ThreadStart)delegate()
{
mydgv.Columns["status"].SortMode = status ? DataGridViewColumnSortMode.Automatic : DataGridViewColumnSortMode.NotSortable;//排序功能状态更改
if (status)
{
mydgv.Sort(mydgv.Columns["status"], ListSortDirection.Ascending); //停止运行任务,自动排序
}
else
{
DataGridViewRebindsource(mydgv); //开始运行任务,排序完后重新绑定数据
}
});
} /// <summary>
/// 列头单击排序事件——after ColumnHeaderMouseClick to re-databound dgv to disable re-sorting
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mydgv_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
switch (mydgv.SortOrder)
{
case System.Windows.Forms.SortOrder.None:
mydgv.Sort(mydgv.Columns[e.ColumnIndex], ListSortDirection.Ascending);
break;
case System.Windows.Forms.SortOrder.Ascending:
mydgv.Sort(mydgv.Columns[e.ColumnIndex], ListSortDirection.Descending);
break;
case System.Windows.Forms.SortOrder.Descending:
mydgv.Sort(mydgv.Columns[e.ColumnIndex], ListSortDirection.Ascending);
break;
} DataGridViewRebindsource(mydgv); //排序完后重新绑定数据
} /// <summary>
/// 重新绑定dgv数据 清除自动排序 —— function: re-databound dgv to disable re-sorting
/// </summary>
/// <param name="dgv"></param>
public void DataGridViewRebindsource(DataGridView dgv)
{
DataTable table = new DataTable();
int dgvColumnsNum = dgv.Columns.Count;
int dgvRowsNum = dgv.Rows.Count;
//获取datagridview的列
foreach (DataGridViewColumn dgvc in dgv.Columns)
{
if (dgvc.Visible && dgvc.CellType != typeof(DataGridViewCheckBoxCell))
{
DataColumn dc = new DataColumn();
dc.ColumnName = dgvc.DataPropertyName;
table.Columns.Add(dc);
}
}
//获取datagridview的行
for (int i = ; i < dgvRowsNum; i++)
{
DataRow dataRow = table.NewRow();
int j = ;
for (j = ; j < dgvColumnsNum; j++)
{
dataRow[j] = dgv.Rows[i].Cells[j].Value;
}
table.Rows.Add(dataRow);
}
dgv.DataSource = table;
}
DataGridView点击排序完成后如何禁止自动排序的更多相关文章
- 【前台页面 BUG】回车按钮后,页面自动跳转
点击回车按钮后,页面自动的迅速跳转 原因: 表单隐式提交了. 解决方法: 在方法执行完成后,加上return false; 代码如下: /** * 注册按钮的点击事件 */ $("#regi ...
- java学习-排序及加密签名时数据排序方式
排序有两种 1. 类实现comparable接口调用List.sort(null)或Collections.sort(List<T>)方法进行排序 jdk内置的基本类型包装类等都实现了Co ...
- winform dataGridView 点击列标题排序
winform手动绑定数据后,点击列标题不能实现自动排序,苦苦寻找方法,发现下面的是可行的. //建立DataTable将当前dataGridView中的数据读进DataTable中 public D ...
- Jquery插件实现点击获取验证码后60秒内禁止重新获取
通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能 先到官网(http://plugins.jquery.com/cookie/ )下载coo ...
- layui表格点击排序按钮后,表格绑定事件失效解决方法
最近项目使用layui较为频繁,遇到了一个麻烦的问题,网上搜索也没有看到同类型的问题,故此记下来. 需求是点击上图右侧表格中某一个单元格,会触发点击事件如下代码: $("table>t ...
- 点击<a>标签后禁止页面跳至顶部
一.点击<a>标签后禁止页面跳至顶部 1. 使用 href="javascript:void(0);",例如: <a href="javascript: ...
- 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。 每次点击之后使结果显示在控制台
<!DOCTYPE html> <html> <head> <!-- 页面上有3个输入框:分别为max,min,num:三个按钮:分别为生成,排序,去重: 在 ...
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- php文件管理,能够点击依照时间,大小,名称排序
php文件管理.能够点击依照时间.大小,名称排序 本例没实用到jquery 演示 PHP Code <?php $rootdir="./"; $spacen ...
随机推荐
- [Java] 将标准字符流写入到文件中(通过控制台写一个html程序,并保存)
package test.stream; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fi ...
- [Java] File类的常用操作
package test.file; import java.io.File; import java.io.IOException; public class TestFile { public s ...
- ibatis配置多表关联(一对一、一对多、多对多)
iBatis的多表关联. ibatis的表关联,和数据库语句无关,是在程序中,把若干语句的结果关联到一起.这种关联形式,虽然在大数据量时是很奢侈的行为,但是看起来很干净,用起来也很方便. 这里用表lo ...
- List集合分组
var ArticleList = new Services.Data.SearchService().GetArticleBaseList(ref param); IEnumerable<IG ...
- gcc编译, gdb调试, makefile写法
//test.c: #include <stdio.h> int main(void) { printf("hello world!"); return 0; } == ...
- js对象4-js原型--杂志
提问:在js中什么是原型 prototype 每个学js的人都有自己的解释,网上一大堆的解释与应用,但是看了他们的解释表示还是不理解怎么办?(原因是他们说的太天花乱坠了) 官方手册解释:prototy ...
- js对象1--杂志
1.对象数组 var arr = [ ] //直接量创建 var arr = array() //通过函数创建 2. 变量与对象 var a = 12; //变量,不属于谁(默认 ...
- GitHub指南
1.创建新仓库 #创建新文件夹,打开,然后执行 git init #以创建新的 git 仓库. 2.检出仓库 #执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/rep ...
- SimpleAdapter类使用方法
SimpleAdapter的构造函数是: public SimpleAdapter (Context context, List<? extends Map<String, ?>&g ...
- java 学习之(基本语法)
强类型:1所有变量必须先定义,再使用.2变量所赋值必须为与其类型匹配的类型. 标识符与关键字 分隔符:;{},[],() space . 用法与.net一样 标识符规则:以_ 字母 $符开头 ...