博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# DataGridView自定义分页控件
阅读量:5133 次
发布时间:2019-06-13

本文共 22161 字,大约阅读时间需要 73 分钟。

 好些日子不仔细写C#代码了,现在主要是Java项目,C#、Net相关项目不多了,有点手生了,以下代码不足之处望各位提出建议和批评。

  近日闲来无事想研究一下自定义控件,虽然之前也看过,那也仅限于皮毛,粗略的一览而已。在研究过程中渐渐地熟悉了自定义控件的相关流程、原理,于是开始自己动手去做一个。考虑到java web项目中经常用到分页查询功能进行数据展示,于是也想着结合自定义控件完成相同效果。当然了,数据导航控件C#已经有现成的,我现在制作此 控件仅仅是巩固练习,同时积累一下技术点,以备后用,各位也可以将对自己有用的部分"拿来"使用,一切都是“拿来主义”嘛,O(∩_∩)O哈哈~

  

  好了,言归正传!

  我看到其它各大博客里面各位博主也有关于DataGridView自定义分页控件的文章。虽然功能能实现,但是我觉得一是自定义控件代码太复杂,小白容易看晕;二是分页查询语句过于复杂,小白更容易看晕。现在就来说一下流程:

    1、创建数据库、数据表

    2、编写分页查询存储过程语句

    3、编写查询表记录个数存储过程语句

    4、编写自定义控件

  总的来说就以上三步,现在我们来细化一下。

创建数据库、数据表

  此处就不多说了,自行创建即可。

  例如我自己创建了一个测试表:

1 --创建数据表 2 CREATE TABLE [dbo].[T_test]( 3     [id] [varchar](36) NOT NULL, 4     [name] [nvarchar](50) NULL, 5     [age] [int] NULL, 6     [sex] [nvarchar](2) NULL, 7     [address] [nvarchar](50) NULL, 8     [job] [nvarchar](50) NULL, 9  CONSTRAINT [PK_T_test] PRIMARY KEY CLUSTERED 10 (11     [id] ASC12 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]13 ) ON [PRIMARY]14 15 16 --插入数据17 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'273ff92e-0c60-4929-baaf-c53048e1b14a', N'张三', 23, N'男', N'济南市', NULL)18 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'27d26321-767b-4760-855c-2dcb3a1d0e45', N'王鹏', 21, N'女', N'济南市', N'美工')19 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'28022085-9aa2-4fac-8c5f-be8d4e129afb', N'陈豪', 25, N'男', N'泰安市', NULL)20 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'3a7145bb-688f-4fa1-b8e9-ad167ddd5be2', N'郭富', 24, N'男', N'济南市', N'软件开发高级工程师')21 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'4828099f-a56a-4fa6-86c0-7d8109b0c3b0', N'王志强', 25, N'男', N'泰安市', NULL)22 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'593482c0-2610-4f50-8ff5-7e9b47031145', N'陈赫', 33, N'男', N'泰安市', NULL)23 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'5c6351ef-6644-4948-82cc-d0f0e5b0d67e', N'陈斌', 29, N'女', N'济南市', NULL)24 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'7063ac03-1057-4c09-946d-ed599c75eaf8', N'赵敏', 21, N'女', N'济南市', NULL)25 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'724ce083-3370-47f1-a921-d31cbdc2c187', N'魏*栋', 26, N'女', N'济南市', N'临沂市')26 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'744032d8-6906-42b7-aedb-e9215ea13962', N'小丽', 22, N'女', N'泰安市', N'UI设计师')27 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'e67e4ea7-9a62-4869-8ca5-b30d45fc8ba4', N'马旭', 22, N'男', N'济南市', NULL)28 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'edf7274c-cdad-4056-bd9a-27be06eb72f7', N'唐寒枫', 24, N'男', N'山东省临沂市', N'设计师')29 INSERT [dbo].[T_test] ([id], [name], [age], [sex], [address], [job]) VALUES (N'fee2a0dd-1d93-4ed6-ad9e-6d8daa044311', N'王伟', 26, N'男', N'泰安市', NULL)

 

编写分页查询存储过程语句

1     --分页查询存储过程 2     if(exists(select* from sys.procedures where name='p_splitpage'))--如果存储过程存在 3         drop proc p_splitpage  --删除存储过程 4     go 5     create proc p_splitpage(@pageSize  varchar(50), @currentPage  varchar(50),@tableName varchar(50))--创建存储过程,定义三个变量'每页显示的条数'、'当前页'、‘表名’ 6     as 7     begin 8         declare @sqlcommand varchar(max)      9         set @sqlcommand ='select  top '+@pageSize+' * from (select ROW_NUMBER() over(order by id) as rowid ,* from '+@tableName+')as A where rowid > ('+@pageSize+')*(('+@currentPage+')-1)'10         exec(@sqlcommand )   11     end12     --分页查询存储过程

测试:exec p_splitpage '10','1','T_test'

编写查询表记录个数存储过程语句

1     --查询表记录数 2     if(exists(select* from sys.procedures where name='p_queryTableRecordCount')) 3         drop proc p_queryTableRecordCount  --那么就删除这个存储过程 4     go 5     CREATE    proc p_queryTableRecordCount(@tablename  varchar(20)) 6     AS 7     BEGIN 8             declare @sqlcommand varchar(max)     9             set @sqlcommand ='select count(*) as 总记录数 from '+@tablename     10             exec(@sqlcommand )     11     END12     GO

测试:exec p_queryTableRecordCount 'T_test';

编写自定义控件

新建项目

 

添加用户控件类

绘制用户控件

这就是我们要绘制的用户控件,没进行美化操作,丑一点就丑一点吧,各位可自行美化处理。

 

编写代码

 

1 using System;  2 using System.Collections.Generic;  3 using System.ComponentModel;  4 using System.Drawing;  5 using System.Data;  6 using System.Linq;  7 using System.Text;  8 using System.Threading.Tasks;  9 using System.Windows.Forms; 10 using System.Data.SqlClient; 11 using DataHelper; 12  13 namespace SX_ControlLibrary 14 { 15     public partial class DataNavigator : UserControl 16     { 17         public DataNavigator() 18         { 19             InitializeComponent(); 20         } 21         #region 变量定义 22         private int sx_totalCount = 0;//总数据个数 23         private int sx_pageCount = 0;//总页数 24         private int sx_currentPageCount = 0;//当前页数据记录数 25         private int sx_currentPageIndex = 1;//当前页索引 26         private int sx_pageSize = 10;//每页分页大小 27         private int sx_yuShu = 0;//最后一页剩余个数 28         private DataGridView sx_dataGirdView = null; 29         private string sx_tableName = "";//DataGridViewd要绑定的表名 30         private string sx_procSplitPageName = "";//DataGridViewd要绑定的分页存储过程名称 31         private string sx_procQueryTableRecordCountName = "";//DataGridViewd要绑定的数据个数查询存储过程名称 32         private bool sx_isAutoUpdateLabelTip = true;//获取或设置是否自动更新分页标签内容提示,默认为true 33         #endregion 34  35  36         #region 控件事件定义 37         //[Category("SX"), Description("【上一页,<<】点击事件")] 38         //public event EventHandler lbForwardClick; 39  40         //[Category("SX"), Description("【下一页,>>】点击事件")] 41         //public event EventHandler lbNextClick; 42  43         //[Category("SX"), Description("【最后一页,>>|】点击事件")] 44         //public event EventHandler lbLastClick; 45  46         //[Category("SX"), Description("【首页,|<<】点击事件")] 47         //public event EventHandler lbFirstClick; 48  49         //[Category("SX"), Description("【显示记录数】修改事件")] 50         //public event EventHandler txtPageCountKeyPress; 51  52  53         ///  54         /// 上一页 55         ///  56         ///  57         ///  58         private void lbForward_Click(object sender, EventArgs e) 59         { 60             if (sx_currentPageIndex <= sx_pageCount && sx_currentPageIndex != 1) 61                 sx_currentPageIndex--; 62             Sx_initDataGirdView(); 63             if (Sx_IsAutoUpdateLabelTip) 64                 Sx_updateSplitPageLabelTip(); 65         } 66  67         ///  68         /// 下一页 69         ///  70         ///  71         ///  72         private void lbNext_Click(object sender, EventArgs e) 73         { 74             if (sx_currentPageIndex < sx_pageCount && sx_currentPageIndex != sx_pageCount) 75                 sx_currentPageIndex++; 76             Sx_initDataGirdView(); 77             if (Sx_IsAutoUpdateLabelTip) 78                 Sx_updateSplitPageLabelTip(); 79         } 80  81         ///  82         /// 最后一页 83         ///  84         ///  85         ///  86         private void lbLast_Click(object sender, EventArgs e) 87         { 88             sx_currentPageIndex = sx_pageCount; 89             Sx_initDataGirdView(); 90         } 91  92         ///  93         /// 首页 94         ///  95         ///  96         ///  97         private void lbFirst_Click(object sender, EventArgs e) 98         { 99             sx_currentPageIndex = 1;100             Sx_initDataGirdView();101         }102 103         private void txtPageCount_KeyPress(object sender, KeyPressEventArgs e)104         {105             if (e.KeyChar == '\r')106             {107                 //TODO 判断处理   暂时不进行数据验证 108                 sx_pageSize = Convert.ToInt32(txtPageCount.Text);109                 calcPageInfo();110                 Sx_initDataGirdView();111             }112         }113         #endregion114 115 116 117         #region 属性定义118         /// 119         /// 获取或设置是否自动更新分页标签内容提示,默认为true,false:不自动更新,可由开发者自行获取数据设置120         /// 121         [Category("SX"), Description("获取或设置是否自动更新分页标签内容提示,默认为true,false:不自动更新,可由开发者自行获取数据设置"), Browsable(true)]122         public bool Sx_IsAutoUpdateLabelTip123         {124             get { return sx_isAutoUpdateLabelTip; }125             set { sx_isAutoUpdateLabelTip = value; }126         }127 128 129         /// 130         /// 获取或设置DataGridViewd要绑定的表名131         /// 132         [Category("SX"), Description("获取或设置DataGridViewd要绑定的表名"), Browsable(true)]133         public string Sx_tableName134         {135             get { return sx_tableName; }136             set { sx_tableName = value; }137         }138 139         /// 140         /// 获取或设置DataGridViewd要绑定的分页存储过程名称141         /// 142         [Category("SX"), Description("获取或设置DataGridViewd要绑定的分页存储过程名称"), Browsable(true)]143         public string Sx_procSplitPageName144         {145             get { return sx_procSplitPageName; }146             set { sx_procSplitPageName = value; }147         }148 149         /// 150         /// 获取或设置DataGridViewd要绑定的数据个数查询存储过程名称151         /// 152         [Category("SX"), Description("获取或设置DataGridViewd要绑定的数据个数查询存储过程名称"), Browsable(true)]153         public string Sx_procQueryTableRecordCountName154         {155             get { return sx_procQueryTableRecordCountName; }156             set { sx_procQueryTableRecordCountName = value; }157         }158 159         /// 160         /// 获取或设置DataGridViewd对象161         /// 162         [Category("SX"), Description("获取或设置DataGridViewd对象"), Browsable(true)]163         public DataGridView Sx_DataGridView164         {165             get { return sx_dataGirdView; }166             set { sx_dataGirdView = value; }167         }168 169         /// 170         /// 获取或设置分页提示标签内容171         /// 172         [Category("SX"), Description("获取或设置分页提示标签内容"), Browsable(true)]173         public string Sx_LbInfo174         {175             get { return lbInfo.Text; }176             set177             {178                 lbInfo.Text = value.ToString();179             }180         }181 182         /// 183         /// 获取总数据个数控价对象184         /// 185         [Category("SX"), Description("总数据个数控价对象"), Browsable(false)]186         public TextBox Sx_TxtPageCount187         {188             get { return txtPageCount; }189         }190 191 192         /// 193         /// 获取或设置总数据个数194         /// 195         [Category("SX_Field"), Description("获取或设置总数据个数"), Browsable(true)]196         public int Sx_TotalCount197         {198             get { return sx_totalCount; }199             set { sx_totalCount = value; }200         }201 202         /// 203         /// 获取或设置总页数204         /// 获取或设置205         [Category("SX_Field"), Description("获取或设置总页数"), Browsable(true)]206         public int Sx_PageCount207         {208             get { return sx_pageCount; }209             set { sx_pageCount = value; }210         }211 212         /// 213         /// 获取或设置每页分页大小214         /// 215         [Category("SX_Field"), Description("获取或设置每页分页大小"), Browsable(true)]216         public int Sx_PageSize217         {218             get { return sx_pageSize; }219             set220             {221                 sx_pageSize = value;222                 txtPageCount.Text = value.ToString();223             }224         }225 226         /// 227         /// 获取或设置当前页数据记录数228         /// 229         [Category("SX_Field"), Description("获取或设置当前页数据记录数"), Browsable(true)]230         public int Sx_CurrentPageCount231         {232             get { return sx_currentPageCount; }233             set { sx_currentPageCount = value; }234         }235 236         /// 237         /// 获取或设置当前页索引238         /// 239         [Category("SX_Field"), Description("获取或设置当前页索引"), Browsable(true)]240         public int Sx_CurrentPageIndex241         {242             get { return sx_currentPageIndex; }243             set { sx_currentPageIndex = value; }244         }245 246         /// 247         /// 获取或设置最后一页剩余个数248         /// 249         [Category("SX_Field"), Description("获取或设置最后一页剩余个数"), Browsable(true)]250         public int Sx_YuShu251         {252             get { return sx_yuShu; }253             set { sx_yuShu = value; }254         }255         #endregion256 257 258 259 260         #region 方法261 262         /// 263         /// 调用存储过程(分页存储过程)初始化dataGirdView264         /// 265         /// 要绑定的表名266         /// 分页查询的存储过程名称:p_splitPage267         /// 查询数据个数的存储过程名称:p_queryTableRecordCount268         public void Sx_initDataGirdView()269         {270             if (Sx_tableName.Length == 0)271             {272                 MessageBox.Show("initDataGirdView方法未指定表名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);273             }274             else275             {276                 SqlParameter[] sp = new SqlParameter[] {277                      new SqlParameter("@pageSize",sx_pageSize),278                      new SqlParameter("@currentPage",sx_currentPageIndex),279                      new SqlParameter("@tableName",Sx_tableName)280                 };281                 sx_dataGirdView.DataSource = CommonDB.invokeProc_DataTable(Sx_procSplitPageName, sp);282 283                 #region dataGridView相关属性设置【抛出,不在此设置】284                  设置 dataGridView1 的第1列整列单元格为只读285                 //dataGirdView.Columns[0].ReadOnly = true;286                  设定包括Header和所有单元格的列宽自动调整287                 //dataGirdView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;288                  设定包括Header和所有单元格的行高自动调整289                 //dataGirdView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;290                 #endregion291 292 293                 //查询表记录数294                 Sx_queryDataCount();295 296                 calcPageInfo();297             }298         }299 300         /// 301         /// 调用存储过程查询表记录数302         /// 303         /// 表名 304         /// 存储过程名称:p_queryTableRecordCount305         private void Sx_queryDataCount()306         {307             if ((Sx_tableName != null && Sx_tableName.Trim().Length != 0) && (Sx_procQueryTableRecordCountName != null && Sx_procQueryTableRecordCountName.Trim().Length != 0))308             {309                 //查询表记录数310                 SqlParameter[] sp = new SqlParameter[] { new SqlParameter("@tableName", Sx_tableName) };311                 object flag = CommonDB.invokeProc_ExecuteScalar(Sx_procQueryTableRecordCountName, sp);312                 sx_totalCount = Convert.ToInt32(flag);313             }314             else315             {316                 MessageBox.Show("queryDataCount参数有误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);317             }318         }319 320 321         public void Sx_updateSplitPageLabelTip()322         {323             lbInfo.Text = "总共" + sx_pageCount + "页" + ",当前第:" + sx_currentPageIndex + "页,其中最后一页有" + sx_yuShu + "条数据";324         }325 326 327         /// 328         /// 计算页信息329         /// 330         /// 总记录数331         /// 每页要显示的条数332         private void calcPageInfo()333         {334             sx_pageCount = sx_totalCount / sx_pageSize; //取模335             sx_yuShu = sx_totalCount % sx_pageSize;//取余336             if (sx_yuShu > 0)337             {338                 sx_pageCount++;339             }340             Console.WriteLine("页大小:" + sx_pageSize);341             Console.WriteLine("当前页索引:" + sx_currentPageIndex);342             Console.WriteLine("pageCount:" + sx_totalCount + " / " + sx_pageSize + "=" + sx_pageCount);343             Console.WriteLine("yuShu:" + sx_totalCount + " % " + sx_pageSize + "=" + sx_yuShu);344             Console.WriteLine("总共" + sx_pageCount + "页" + ",当前第:" + sx_currentPageIndex + "页,其中最后一页有" + sx_yuShu + "条数据");345 346             if (Sx_IsAutoUpdateLabelTip)347                 Sx_updateSplitPageLabelTip();348         }349 350 351 352         #endregion353     }354 }

用到的相关类库:CommonDB.cs

1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Threading.Tasks;  6 using System.Windows.Forms;  7 using System.Data.SqlClient;  8 using System.Data;  9 using System.Reflection; 10 namespace DataHelper 11 { 12     public class CommonDB 13     {  14         private static string connStr = "server=.;database=ERP_DB;Integrated security=true;Trusted_Connection=SSPI"; 15  16           17  18         ///  19         /// 准备执行一个命令 20         ///  21         /// sql命令 22         /// Sql连接 23         /// Sql事务 24         /// 命令文本,例如:Select * from Products 25         /// 执行命令的参数 26         private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) 27         { 28             //判断连接的状态。如果是关闭状态,则打开 29             if (conn.State != ConnectionState.Open) 30                 conn.Open(); 31             //cmd属性赋值 32             cmd.Connection = conn; 33             cmd.CommandText = cmdText; 34             //是否需要用到事务处理 35             if (trans != null) 36                 cmd.Transaction = trans; 37             //cmd.CommandType = CommandType.Text; 38             cmd.CommandType = cmdType; 39             //添加cmd需要的存储过程参数 40             if (cmdParms != null) 41             { 42                 foreach (SqlParameter parm in cmdParms) 43                     cmd.Parameters.Add(parm); 44             } 45         } 46   47         ///  48         /// 调用存储过程 49         ///  50         /// 存储过程名称 51         /// 存储过程参数 52         /// 
返回受影响的行数
53 public static int invokeProc_NonQuery(string procName, params SqlParameter[] commandParameters) 54 { 55 using (SqlConnection conn = new SqlConnection(connStr)) 56 { 57 SqlCommand sqlCmd = new SqlCommand(); 58 PrepareCommand(sqlCmd, conn, null, CommandType.StoredProcedure, procName, commandParameters); 59 int flag = sqlCmd.ExecuteNonQuery(); 60 sqlCmd.Parameters.Clear(); 61 return flag; 62 } 63 64 } 65 66 /// 67 /// 调用存储过程 68 /// 69 /// 存储过程名称 70 /// 存储过程参数 71 ///
返回DataTable对象
72 public static DataTable invokeProc_DataTable(string procName, params SqlParameter[] commandParameters) 73 { 74 using (SqlConnection conn = new SqlConnection(connStr)) 75 { 76 SqlCommand sqlCmd = new SqlCommand(); 77 PrepareCommand(sqlCmd, conn, null, CommandType.StoredProcedure, procName, commandParameters); 78 SqlDataAdapter da = new SqlDataAdapter(sqlCmd); 79 DataTable dt = new DataTable(); 80 try 81 { 82 //填充ds 83 da.Fill(dt); 84 // 清除cmd的参数集合 85 sqlCmd.Parameters.Clear(); 86 //返回ds 87 return dt; 88 } 89 catch (Exception ex) 90 { 91 LogLib.LogHelper.ERROR(ex); 92 //关闭连接,抛出异常 93 conn.Close(); 94 throw; 95 } 96 } 97 } 98 99 100 /// 101 /// 调用存储过程。用指定的数据库连接执行一个命令并返回一个数据集的第一列102 /// 103 /// 104 /// 105 ///
返回一个数据集的第一列
106 public static object invokeProc_ExecuteScalar(string procName, params SqlParameter[] commandParameters)107 {108 109 using (SqlConnection conn = new SqlConnection(connStr))110 {111 SqlCommand sqlCmd = new SqlCommand();112 PrepareCommand(sqlCmd, conn, null, CommandType.StoredProcedure, procName, commandParameters);113 object flag = sqlCmd.ExecuteScalar();114 sqlCmd.Parameters.Clear();115 return flag;116 }117 118 }119 }120 }

调用

新建一个winform窗体应用程序,拖入一个DataGirdView控件和刚才自定义控件,如下

代码:

1 using DataHelper; 2 using System; 3 using System.Collections.Generic; 4 using System.ComponentModel; 5 using System.Data; 6 using System.Data.SqlClient; 7 using System.Drawing; 8 using System.Drawing.Drawing2D; 9 using System.Linq;10 using System.Text;11 using System.Threading.Tasks;12 using System.Windows.Forms;13 14 namespace TestProjrct15 {16     public partial class Form2 : Form17     {18         public Form2()19         {20             InitializeComponent();21         }22         23         private void Form2_Load(object sender, EventArgs e)24         {25             //指定控件对象26             dataNavigator1.Sx_DataGridView = dataGridView1;27 28             //可以在代码中设置dataGirdView控件属性,也可以在【属性】窗格设置29             //dataNavigator1.Sx_tableName = "T_test";30             //dataNavigator1.Sx_procQueryTableRecordCountName = "p_queryTableRecordCount";31             //dataNavigator1.Sx_procSplitPageName = "p_splitPage";32 33 34             //调用控件方法,绑定数据35             dataNavigator1.Sx_initDataGirdView();36 37             // 设置 dataGridView1 的第1列整列单元格为只读38             dataNavigator1.Sx_DataGridView.Columns[0].ReadOnly = true;39             // 设定包括Header和所有单元格的列宽自动调整40             dataNavigator1.Sx_DataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;41             // 设定包括Header和所有单元格的行高自动调整42             dataNavigator1.Sx_DataGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;43 44         }45 46     }47 }

可以看到,最终使用的时候代码很少,很简洁。只要创建好数据表以及相关存储过程(建议使用以上sql脚本用的存储过程默认名称,当然可以自定义)。

以上代码关键点有两个

一是:

dataNavigator1.Sx_DataGridView = dataGridView1;

 二是设置参数进行数据绑定:

//可以在代码中设置dataGirdView控件属性,也可以在【属性】窗格设置//dataNavigator1.Sx_tableName = "T_test";//dataNavigator1.Sx_procQueryTableRecordCountName = "p_queryTableRecordCount";//dataNavigator1.Sx_procSplitPageName = "p_splitPage";
dataNavigator1.Sx_initDataGirdView(); 此处我在属性窗格进行设置的,如图:

当然可以代码设置,只需要将上面注释的代码(29~31行)打开即可。

37~42行进行相关特性设置,这个根据需要设置,非必须。

说明:

自定义控件的属性和相关方法都是以“Sx_”开头,便于查找,另外,相关注释说明也相对比较完善。

 

运行效果:

 

 

注意,以上“共:X条数据”没有动态更新,只要将属性Sx_IsAutoUpdateLabelTip改为true即可,代码设置也可以,属性表中设置也可以。改后:

转载于:https://www.cnblogs.com/zxtceq/p/8125355.html

你可能感兴趣的文章
Android Bitmap 和 Canvas详解
查看>>
最大权闭合子图
查看>>
oracle 创建暂时表
查看>>
201421410014蒋佳奇
查看>>
导入导出数据库和导入导出数据库表
查看>>
linux下操作mysql
查看>>
【03月04日】A股滚动市盈率PE历史新低排名
查看>>
Xcode5和ObjC新特性
查看>>
jvm slot复用
查看>>
高并发系统数据库设计
查看>>
LibSVM for Python 使用
查看>>
入坑的开始~O(∩_∩)O~
查看>>
Centos 7.0 安装Mono 3.4 和 Jexus 5.6
查看>>
Windows 7 上安装Visual Studio 2015 失败解决方案
查看>>
iOS按钮长按
查看>>
Shell流程控制
查看>>
CSS属性值currentColor
查看>>
[Leetcode|SQL] Combine Two Tables
查看>>
《DSP using MATLAB》Problem 7.37
查看>>
ROS lesson 1
查看>>