手机
当前位置:查字典教程网 >编程开发 >C#教程 >Winform中GridView分组排序功能实现方法
Winform中GridView分组排序功能实现方法
摘要:本文实例讲述了Winform中GridView分组排序功能实现方法。分享给大家供大家参考。具体实现方法如下:一、问题:由于客户最近要扩充公司...

本文实例讲述了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,1);

#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 >= 1 && month <= 9)

return "0" + 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 = 0;

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 = 0;

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 != 0)

bulkCopy.WriteToServer(sourceDt); //将提供的数据源中的所有行复制到目标表中

}

catch (Exception ex)

{

throw ex;

}

finally

{

conn.Close();

if (bulkCopy != null)

bulkCopy.Close();

}

}

#endregion

}

}

最终显示效果图如下:

Winform中GridView分组排序功能实现方法1

希望本文所述对大家的C#程序设计有所帮助。

【Winform中GridView分组排序功能实现方法】相关文章:

在C#中创建和读取XML文件的实现方法

c# 重载WndProc,实现重写“最小化”的实现方法

c# n个数排序实现代码

C#对XML文件的各种操作实现方法

WinForm子窗体访问父窗体控件的实现方法

解决C#中取消方向键对控件焦点控制的实现方法

WinForm中的登录实现

C# TrieTree介绍及实现方法

c#解压文件的实例方法

关于C#生成MongoDB中ObjectId的实现方法

精品推荐
分类导航