Winform中GridView分组排序实现功能
由于客户最近要扩充公司的业务,之前基于Winform+web开发混合式的系统已经不能满足他们的需求,需要从新对系统进行分区处理。
考虑到系统模块里面用到的GridView视图比较多,我就结合了DevExpress第三方GridControl简单的写了个Demo,对数据进行分组
排序。
主程序源码:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using DevExpress.XtraGrid.Columns;
- using DevExpress.Data;
- namespace GridViewSortTest
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- InitLoad();
- #region 分组排序代码
- GridColumnSortInfo[] sortInfo = {
- new GridColumnSortInfo(gdvSort.Columns["GET_YEAR"], ColumnSortOrder.Ascending),
- new GridColumnSortInfo(gdvSort.Columns["ID"], ColumnSortOrder.Descending),
- };
- gdvSort.SortInfo.ClearAndAddRange(sortInfo,);
- #endregion
- }
- /// <summary>
- /// 初始化GirdControl数据
- /// </summary>
- private void InitLoad()
- {
- gdcSort.DataSource= DBHelp.GetTable(string.Format(@"SELECT ID,NAME,GET_YEAR,
- URL_ADRRESS FROM TB_SORT_TEST"));
- }
- /// <summary>
- /// GirdView单击事件
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void gdvSort_Click(object sender, EventArgs e)
- {
- if (gdvSort.FocusedColumn.FieldName.Equals(@"NAME") && gdvSort.GetFocusedRowCellValue("NAME") != null)
- {
- string url = gdvSort.GetFocusedRowCellValue("URL_ADRRESS").ToString()+
- gdvSort.GetFocusedRowCellValue("GET_YEAR").ToString() +
- MonthToString(int.Parse(gdvSort.GetFocusedRowCellValue("ID").ToString())) +
- gdvSort.GetFocusedRowCellValue("NAME").ToString()+".html";
- webBrowser.Navigate(url);
- }
- }
- /// <summary>
- /// 月份转换成字符串
- /// </summary>
- /// <param name="month"></param>
- /// <returns></returns>
- private string MonthToString(int month)
- {
- if (month >= && month <= )
- return "" + month.ToString();
- else
- return month.ToString();
- }
- }
- }
DBHelp类源码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Data;
- using System.Data.SqlClient;
- namespace GridViewSortTest
- {
- public class DBHelp
- {
- //连接字符串
- static string strConn =@"Server=.\SQLEXPRESS; Database= SysBusiness; User Id=sa; Password=123456;Trusted_Connection = False ";
- #region 执行查询,返回DataTable对象-----------------------
- public static DataTable GetTable(string strSQL)
- {
- return GetTable(strSQL, null);
- }
- public static DataTable GetTable(string strSQL, SqlParameter[] pas)
- {
- return GetTable(strSQL, pas, CommandType.Text);
- }
- /// <summary>
- /// 执行查询,返回DataTable对象
- /// </summary>
- /// <param name="strSQL">sql语句</param>
- /// <param name="pas">参数数组</param>
- /// <param name="cmdtype">Command类型</param>
- /// <returns>DataTable对象</returns>
- public static DataTable GetTable(string strSQL, SqlParameter[] pas, CommandType cmdtype)
- {
- DataTable dt = new DataTable(); ;
- using (SqlConnection conn = new SqlConnection(strConn))
- {
- SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
- da.SelectCommand.CommandType = cmdtype;
- if (pas != null)
- {
- da.SelectCommand.Parameters.AddRange(pas);
- }
- da.Fill(dt);
- }
- return dt;
- }
- #endregion
- #region 执行查询,返回DataSet对象-------------------------
- public static DataSet GetDataSet(string strSQL)
- {
- return GetDataSet(strSQL, null);
- }
- public static DataSet GetDataSet(string strSQL, SqlParameter[] pas)
- {
- return GetDataSet(strSQL, pas, CommandType.Text);
- }
- /// <summary>
- /// 执行查询,返回DataSet对象
- /// </summary>
- /// <param name="strSQL">sql语句</param>
- /// <param name="pas">参数数组</param>
- /// <param name="cmdtype">Command类型</param>
- /// <returns>DataSet对象</returns>
- public static DataSet GetDataSet(string strSQL, SqlParameter[] pas, CommandType cmdtype)
- {
- DataSet dt = new DataSet(); ;
- using (SqlConnection conn = new SqlConnection(strConn))
- {
- SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
- da.SelectCommand.CommandType = cmdtype;
- if (pas != null)
- {
- da.SelectCommand.Parameters.AddRange(pas);
- }
- da.Fill(dt);
- }
- return dt;
- }
- #endregion
- #region 执行非查询存储过程和SQL语句-----------------------------
- public static int ExcuteProc(string ProcName)
- {
- return ExcuteSQL(ProcName, null, CommandType.StoredProcedure);
- }
- public static int ExcuteProc(string ProcName, SqlParameter[] pars)
- {
- return ExcuteSQL(ProcName, pars, CommandType.StoredProcedure);
- }
- public static int ExcuteSQL(string strSQL)
- {
- return ExcuteSQL(strSQL, null);
- }
- public static int ExcuteSQL(string strSQL, SqlParameter[] paras)
- {
- return ExcuteSQL(strSQL, paras, CommandType.Text);
- }
- /// 执行非查询存储过程和SQL语句
- /// 增、删、改
- /// </summary>
- /// <param name="strSQL">要执行的SQL语句</param>
- /// <param name="paras">参数列表,没有参数填入null</param>
- /// <param name="cmdType">Command类型</param>
- /// <returns>返回影响行数</returns>
- public static int ExcuteSQL(string strSQL, SqlParameter[] paras, CommandType cmdType)
- {
- int i = ;
- using (SqlConnection conn = new SqlConnection(strConn))
- {
- SqlCommand cmd = new SqlCommand(strSQL, conn);
- cmd.CommandType = cmdType;
- if (paras != null)
- {
- cmd.Parameters.AddRange(paras);
- }
- conn.Open();
- i = cmd.ExecuteNonQuery();
- conn.Close();
- }
- return i;
- }
- #endregion
- #region 执行查询返回第一行,第一列---------------------------------
- public static int ExcuteScalarSQL(string strSQL)
- {
- return ExcuteScalarSQL(strSQL, null);
- }
- public static int ExcuteScalarSQL(string strSQL, SqlParameter[] paras)
- {
- return ExcuteScalarSQL(strSQL, paras, CommandType.Text);
- }
- public static int ExcuteScalarProc(string strSQL, SqlParameter[] paras)
- {
- return ExcuteScalarSQL(strSQL, paras, CommandType.StoredProcedure);
- }
- /// <summary>
- /// 执行SQL语句,返回第一行,第一列
- /// </summary>
- /// <param name="strSQL">要执行的SQL语句</param>
- /// <param name="paras">参数列表,没有参数填入null</param>
- /// <returns>返回影响行数</returns>
- public static int ExcuteScalarSQL(string strSQL, SqlParameter[] paras, CommandType cmdType)
- {
- int i = ;
- using (SqlConnection conn = new SqlConnection(strConn))
- {
- SqlCommand cmd = new SqlCommand(strSQL, conn);
- cmd.CommandType = cmdType;
- if (paras != null)
- {
- cmd.Parameters.AddRange(paras);
- }
- conn.Open();
- i = Convert.ToInt32(cmd.ExecuteScalar());
- conn.Close();
- }
- return i;
- }
- #endregion
- #region 查询获取单个值------------------------------------
- /// <summary>
- /// 调用不带参数的存储过程获取单个值
- /// </summary>
- /// <param name="ProcName"></param>
- /// <returns></returns>
- public static object GetObjectByProc(string ProcName)
- {
- return GetObjectByProc(ProcName, null);
- }
- /// <summary>
- /// 调用带参数的存储过程获取单个值
- /// </summary>
- /// <param name="ProcName"></param>
- /// <param name="paras"></param>
- /// <returns></returns>
- public static object GetObjectByProc(string ProcName, SqlParameter[] paras)
- {
- return GetObject(ProcName, paras, CommandType.StoredProcedure);
- }
- /// <summary>
- /// 根据sql语句获取单个值
- /// </summary>
- /// <param name="strSQL"></param>
- /// <returns></returns>
- public static object GetObject(string strSQL)
- {
- return GetObject(strSQL, null);
- }
- /// <summary>
- /// 根据sql语句 和 参数数组获取单个值
- /// </summary>
- /// <param name="strSQL"></param>
- /// <param name="paras"></param>
- /// <returns></returns>
- public static object GetObject(string strSQL, SqlParameter[] paras)
- {
- return GetObject(strSQL, paras, CommandType.Text);
- }
- /// <summary>
- /// 执行SQL语句,返回首行首列
- /// </summary>
- /// <param name="strSQL">要执行的SQL语句</param>
- /// <param name="paras">参数列表,没有参数填入null</param>
- /// <returns>返回的首行首列</returns>
- public static object GetObject(string strSQL, SqlParameter[] paras, CommandType cmdtype)
- {
- object o = null;
- using (SqlConnection conn = new SqlConnection(strConn))
- {
- SqlCommand cmd = new SqlCommand(strSQL, conn);
- cmd.CommandType = cmdtype;
- if (paras != null)
- {
- cmd.Parameters.AddRange(paras);
- }
- conn.Open();
- o = cmd.ExecuteScalar();
- conn.Close();
- }
- return o;
- }
- #endregion
- #region 查询获取DataReader------------------------------------
- /// <summary>
- /// 调用不带参数的存储过程,返回DataReader对象
- /// </summary>
- /// <param name="procName">存储过程名称</param>
- /// <returns>DataReader对象</returns>
- public static SqlDataReader GetReaderByProc(string procName)
- {
- return GetReaderByProc(procName, null);
- }
- /// <summary>
- /// 调用带有参数的存储过程,返回DataReader对象
- /// </summary>
- /// <param name="procName">存储过程名</param>
- /// <param name="paras">参数数组</param>
- /// <returns>DataReader对象</returns>
- public static SqlDataReader GetReaderByProc(string procName, SqlParameter[] paras)
- {
- return GetReader(procName, paras, CommandType.StoredProcedure);
- }
- /// <summary>
- /// 根据sql语句返回DataReader对象
- /// </summary>
- /// <param name="strSQL">sql语句</param>
- /// <returns>DataReader对象</returns>
- public static SqlDataReader GetReader(string strSQL)
- {
- return GetReader(strSQL, null);
- }
- /// <summary>
- /// 根据sql语句和参数返回DataReader对象
- /// </summary>
- /// <param name="strSQL">sql语句</param>
- /// <param name="paras">参数数组</param>
- /// <returns>DataReader对象</returns>
- public static SqlDataReader GetReader(string strSQL, SqlParameter[] paras)
- {
- return GetReader(strSQL, paras, CommandType.Text);
- }
- /// <summary>
- /// 查询SQL语句获取DataReader
- /// </summary>
- /// <param name="strSQL">查询的SQL语句</param>
- /// <param name="paras">参数列表,没有参数填入null</param>
- /// <returns>查询到的DataReader(关闭该对象的时候,自动关闭连接)</returns>
- public static SqlDataReader GetReader(string strSQL, SqlParameter[] paras, CommandType cmdtype)
- {
- SqlDataReader sqldr = null;
- SqlConnection conn = new SqlConnection(strConn);
- SqlCommand cmd = new SqlCommand(strSQL, conn);
- cmd.CommandType = cmdtype;
- if (paras != null)
- {
- cmd.Parameters.AddRange(paras);
- }
- conn.Open();
- //CommandBehavior.CloseConnection的作用是如果关联的DataReader对象关闭,则连接自动关闭
- sqldr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- return sqldr;
- }
- #endregion
- #region 批量插入数据---------------------------------------------
- /// <summary>
- /// 往数据库中批量插入数据
- /// </summary>
- /// <param name="sourceDt">数据源表</param>
- /// <param name="targetTable">服务器上目标表</param>
- public static void BulkToDB(DataTable sourceDt, string targetTable)
- {
- SqlConnection conn = new SqlConnection(strConn);
- SqlBulkCopy bulkCopy = new SqlBulkCopy(conn); //用其它源的数据有效批量加载sql server表中
- bulkCopy.DestinationTableName = targetTable; //服务器上目标表的名称
- bulkCopy.BatchSize = sourceDt.Rows.Count; //每一批次中的行数
- try
- {
- conn.Open();
- if (sourceDt != null && sourceDt.Rows.Count != )
- bulkCopy.WriteToServer(sourceDt); //将提供的数据源中的所有行复制到目标表中
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- conn.Close();
- if (bulkCopy != null)
- bulkCopy.Close();
- }
- }
- #endregion
- }
- }
最终显示效果图:
Winform中GridView分组排序实现功能的更多相关文章
- sql server 中判断分组排序的使用示例
现在需要查询一组数据,是对一列字段(column01)的数据分范围查询后分组排序: select (case when [column01] >0 AND [column01]<= 500 ...
- oracle中的分组排序
1.首先,需要建表. 表名:coursr(失误,表名写错了) 2.我们需要对每个课程进行排序. 3.知识准备: 分组排序函数有3种: row_number() over() rank() over() ...
- 025. asp.net中GridView的排序和过滤
前台HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Defaul ...
- oracle中分组排序函数用法 - 转
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- oracle 分组排序函数
项目开发中,我们有时会碰到需要分组排序来解决问题的情况:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示例和 ...
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能 由于MYSQL没有提供类似ORACLE中OVER()这样丰富的分析函数. 所以在MYSQ ...
- MYSQL-实现分组排序 对比 ORACLE 和SQLserver用 row_number() over(partition by ) 分组排序功能
以下是个人笔记: 本文是为了理解 row_number() over(partition by ) 和实现各种数据库的分组排序功能 select ROW_NUMBER()over( partitio ...
- 禁用datagridview中的自动排序功能
把datagridview中的自动排序功能禁用自己收集的两种方法,看看吧①DataGridView中的Columns属性里面可以设置.进入"EditColumns"窗口后,在相应的 ...
- 2 weekend110的hadoop的自定义排序实现 + mr程序中自定义分组的实现
我想得到按流量来排序,而且还是倒序,怎么达到实现呢? 达到下面这种效果, 默认是根据key来排, 我想根据value里的某个排, 解决思路:将value里的某个,放到key里去,然后来排 下面,开始w ...
随机推荐
- JS学习笔记 - 运动 - 淘宝轮播图
<script> window.onload=function () { var oDiv=document.getElementById('play'); var aBtn=oDiv.g ...
- js中的$符号代表什么
js中的$符号代表什么 一.总结 1.$:相当于document.getElementById(...) 2.$常用用法:每句话意思下面有,好东西 $("div p"); // ( ...
- 使用ClassyShark压缩你的项目
原文链接 : Shrinking Your Build With No Rules and do it with Class(yShark) 原文作者 : Roberto Orgiu 译文出自 : 开 ...
- NSArray NSDictionary一些用法
//从字符串分割到数组- componentsSeparatedByString: NSString *str = [NSString alloc] initWithString:@"a,b ...
- 用strace排查故障的5种简单方法(每日一译)
原文链接:5 simple ways to troubleshoot using Strace 我很意外大部分人都不知道如何使用strace.strace一直是我的首选debug工具,因为它非常的有效 ...
- 在vue中使用font-awesome
1.安装 cnpm i font-awesome -S 2.在main.js中引入 import 'font-awesome/css/font-awesome.min.css'
- Cygwin 与 MinGW/MSYS/MSYS2,如何选择?甚至还有GNU utilities for Win32
Cygwin与MinGW/MSYS,如何选择? 2012-11-03更新:加入 MSYS 的内容. 2013-10-15更新:修改表格格式,加入介绍链接. 2014-12-17更新:加入 MSYS2 ...
- Android 报错 Error:(303, 27) 错误: 找不到符号 符号: 方法 sin(float) 位置: 类 FloatMath
今天更新了sdk,升级到Android SDK 23.发现Android studio用23编译 SlidingMenu时出错,错误如下: 报错的地方这这里: float distanceInflue ...
- 【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysqlclient
[送给在路上的程序猿] 对于一个开发人员而言,能够胜任系统中随意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并能够利运用到系统中,由此简化系统的开发,是其架构生涯的第一步 ...
- 【u229】独木桥
Time Limit: 1 second Memory Limit: 64 MB [问题描述] 战争已经进入到紧要时间.你是运输小队长,正在率领运输部队向前线运送物资.运输任务像做题一样的无聊.你希望 ...