winform 分页控件经典

winform 分页控件经典
winform 分页控件经典

winform 分页控件

以前都是从事B/S开发,由于公司有个比较大的C/S项目,在使用DATAGRIDVIEW的时候,显示数据量比较大,所以才用分页模式,也不知道这样是否正确。

想找个C/S下面的分页控件,都没有什么好的,就自己跟B/S下的分页控件,修改成WINFORM 下面的。

首先创建一个用户控件名称为pager,在控件中拖入bindingNavigator和bindingSource,修改bindingNavigator,加入必要的一些控件。

效果如下:

代码实现如下:

namespace WindowsApp.MyControl

{

///

///申明委托

///

///

///

public delegate int EventPagingHandler(EventPagingArg e);

///

///分页控件呈现

///

public partial class Pager : UserControl

{

public Pager()

{

InitializeComponent();

}

public event EventPagingHandler EventPaging;

///

///每页显示记录数

///

private int _pageSize = 20;

///

///每页显示记录数

///

public int PageSize

{

get { return _pageSize; }

set

{

_pageSize = value;

GetPageCount();

}

}

private int _nMax = 0;

///

///总记录数

///

public int NMax

{

get { return _nMax; }

set

{

_nMax = value;

GetPageCount();

}

}

private int _pageCount = 0;

///

///页数=总记录数/每页显示记录数

///

public int PageCount

{

get { return _pageCount; }

set { _pageCount = value; }

}

private int _pageCurrent = 0;

///

///当前页号

///

public int PageCurrent

{

get { return _pageCurrent; }

set { _pageCurrent = value; }

}

private void GetPageCount()

{

if (this.NMax > 0)

{

this.PageCount = Convert.ToInt32(Math.Ceiling(Conve rt.ToDouble(this.NMax) / Convert.ToDouble(this.PageSize)));

}

else

{

this.PageCount = 0;

}

}

///

///翻页控件数据绑定的方法

///

public void Bind()

{

if (this.EventPaging != null)

{

this.NMax = this.EventPaging(new EventPagingArg(thi

s.PageCurrent));

}

if (this.PageCurrent > this.PageCount)

{

this.PageCurrent = this.PageCount;

}

if (this.PageCount == 1)

{

this.PageCurrent = 1;

}

lblPageCount.Text = this.PageCount.ToString();

this.lblMaxPage.Text = "共"+this.NMax.ToString()+"条记录";

this.txtCurrentPage.Text = this.PageCurrent.ToString();

if (this.PageCurrent == 1)

{

this.btnPrev.Enabled = false;

this.btnFirst.Enabled = false;

}

else

{

btnPrev.Enabled = true;

btnFirst.Enabled = true;

}

if (this.PageCurrent == this.PageCount)

{

this.btnLast.Enabled = false;

this.btnNext.Enabled = false;

}

else

{

btnLast.Enabled = true;

btnNext.Enabled = true;

}

if (this.NMax == 0)

{

btnNext.Enabled = false;

btnLast.Enabled = false;

btnFirst.Enabled = false;

btnPrev.Enabled = false;

}

}

private void btnFirst_Click(object sender, EventArgs e)

{

PageCurrent = 1;

this.Bind();

}

private void btnPrev_Click(object sender, EventArgs e)

{

PageCurrent -= 1;

if (PageCurrent <= 0)

{

PageCurrent = 1;

}

this.Bind();

}

private void btnNext_Click(object sender, EventArgs e)

{

this.PageCurrent += 1;

if (PageCurrent > PageCount)

{

PageCurrent = PageCount;

}

this.Bind();

}

private void btnLast_Click(object sender, EventArgs e)

{

PageCurrent = PageCount;

this.Bind();

}

private void btnGo_Click(object sender, EventArgs e)

{

if (this.txtCurrentPage.Text != null && txtCurrentPage. Text != "")

{

if (Int32.TryParse(txtCurrentPage.Text, out _pageCu rrent))

{

this.Bind();

}

else

{

Common.MessageProcess.ShowError("输入数字格式错误!");

}

}

}

}

///

///自定义事件数据基类

///

public class EventPagingArg : EventArgs

{

private int _intPageIndex;

public EventPagingArg(int PageIndex)

{

_intPageIndex = PageIndex;

}

}

}

控件功能基本实现。

如何绑定数据呢?

大数量分页,使用存储过程。

这个存储过程是网络上考的,呵呵。我把它给贴出来,希望原作者别砸我砖头。。。。。

ALTER PROCEDURE SP_Pagination

/*

***************************************************************

** 千万数量级分页存储过程 **

***************************************************************

参数说明:

1.Tables :表名称,视图

2.PrimaryKey :主关键字

3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc

4.CurrentPage :当前页码

5.PageSize :分页尺寸

6.Filter :过滤语句,不带Where

7.Group :Group语句,不带Group By

效果演示:https://www.360docs.net/doc/9111619241.html,/_App/Enterprise/QueryResult.aspx ***************************************************************/

(

@Tables varchar(2000),

@PrimaryKey varchar(500),

@Sort varchar(500) =NULL,

@CurrentPage int=1,

@PageSize int=10,

@Fields varchar(2000) ='*',

@Filter varchar(1000) =NULL,

@Group varchar(1000) =NULL

)

AS

/*默认排序*/

IF@Sort IS NULL OR@Sort=''

SET@Sort=@PrimaryKey

DECLARE@SortTable varchar(1000)

DECLARE@SortName varchar(1000)

DECLARE@strSortColumn varchar(1000)

DECLARE@operator char(2)

DECLARE@type varchar(1000)

DECLARE@prec int

/*设定排序语句.*/

IF CHARINDEX('DESC',@Sort)>0

BEGIN

SET@strSortColumn=REPLACE(@Sort, 'DESC', '')

SET@operator='<='

END

ELSE

BEGIN

IF CHARINDEX('ASC', @Sort) =0

SET@strSortColumn=REPLACE(@Sort, 'ASC', '')

SET@operator='>='

END

IF CHARINDEX('.', @strSortColumn) >0

BEGIN

SET@SortTable=SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSor tColumn))

SET@SortName=SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortCol umn) +1, LEN(@strSortColumn))

END

ELSE

BEGIN

SET@SortTable=@Tables

SET@SortName=@strSortColumn

END

SELECT@type=https://www.360docs.net/doc/9111619241.html,, @prec=c.prec

FROM sysobjects o

JOIN syscolumns c on o.id=c.id

JOIN systypes t on c.xusertype=t.xusertype

WHERE https://www.360docs.net/doc/9111619241.html, =@SortTable AND https://www.360docs.net/doc/9111619241.html, =@SortName

IF CHARINDEX('char', @type) >0

SET@type=@type+'('+CAST(@prec AS varchar) +')'

DECLARE@strPageSize varchar(500)

DECLARE@strStartRow varchar(500)

DECLARE@strFilter varchar(1000)

DECLARE@strSimpleFilter varchar(1000)

DECLARE@strGroup varchar(1000)

/*默认当前页*/

IF@CurrentPage<1

SET@CurrentPage=1

/*设置分页参数.*/

SET@strPageSize=CAST(@PageSize AS varchar(500))

SET@strStartRow=CAST(((@CurrentPage-1)*@PageSize+1) AS varch ar(500))

/*筛选以及分组语句.*/

IF@Filter IS NOT NULL AND@Filter!=''

BEGIN

SET@strFilter=' WHERE '+@Filter+' '

SET@strSimpleFilter=' AND '+@Filter+' '

END

ELSE

BEGIN

SET@strSimpleFilter=''

SET@strFilter=''

END

IF@Group IS NOT NULL AND@Group!=''

SET@strGroup=' GROUP BY '+@Group+' '

ELSE

SET@strGroup=''

/*执行查询语句*/

EXEC(

'

DECLARE @SortColumn '+@type+'

SET ROWCOUNT '+@strStartRow+'

SELECT @SortColumn='+@strSortColumn+' FROM '+@Tables+@strFi lter+' '+@strGroup+' ORDER BY '+@Sort+'

SET ROWCOUNT '+@strPageSize+'

SELECT '+@Fields+' FROM '+@Tables+' WHERE '+@strSortColum n+@operator+' @SortColumn '+@strSimpleFilter+' '+@strGrou

p+' ORDER BY '+@Sort+'

'

)

使用该存储过陈,得到数据,将数据绑定到数据控件,提供了一个pageData类///

///数据源提供

///

public class PageData

{

private int _PageSize = 10;

private int _PageIndex = 1;

private int _PageCount = 0;

private int _TotalCount = 0;

private string _TableName;//表名

private string _QueryFieldName = "*";//表字段FieldStr

private string _OrderStr = string.Empty; //排序_SortStr

private string _QueryCondition = string.Empty;//查询的条件 Ro wFilter

private string _PrimaryKey = string.Empty;//主键

///

/// 显示页数

///

public int PageSize

{

get

{

return _PageSize;

}

set

{

_PageSize = value;

}

}

///

/// 当前页

///

public int PageIndex

{

get

{

return _PageIndex;

}

set

{

_PageIndex = value;

}

}

///

/// 总页数

///

public int PageCount

{

get

{

return _PageCount;

}

}

///

///总记录数

///

public int TotalCount

{

get

{

return _TotalCount;

}

}

///

///表名,包括视图

///

public string TableName

{

get

{

return _TableName;

}

set

{

_TableName = value;

}

}

///

///表字段FieldStr

///

public string QueryFieldName

{

get

{

return _QueryFieldName;

}

set

{

_QueryFieldName = value;

}

}

///

///排序字段

///

public string OrderStr

{

get

{

return _OrderStr;

}

set

{

_OrderStr = value;

}

}

///

///查询条件

///

public string QueryCondition

{

get

{

return _QueryCondition;

}

set

{

_QueryCondition = value;

}

}

///

///主键

///

public string PrimaryKey

{

get {

return _PrimaryKey;

}

set {

_PrimaryKey = value;

}

}

public DataSet QueryDataTable()

{

SqlParameter[] parameters = {

new SqlParameter("@Tables", SqlDbType.VarCha

r, 255),

new SqlParameter("@PrimaryKey" , SqlDbType.VarC har , 255),

new SqlParameter("@Sort", SqlDbType.VarChar , 2

55 ),

new SqlParameter("@CurrentPage", SqlDbType.Int),

new SqlParameter("@PageSize", SqlDbType.In

t),

new SqlParameter("@Fields", SqlDbType.VarCha

r, 255),

new SqlParameter("@Filter", SqlDbType.VarChar,1 000),

new SqlParameter("@Group" ,SqlDbType.VarCha

r , 1000 )

};

parameters[0].Value = _TableName;

parameters[1].Value = _PrimaryKey;

parameters[2].Value = _OrderStr;

parameters[3].Value = PageIndex;

parameters[4].Value = PageSize;

parameters[5].Value =_QueryFieldName;

parameters[6].Value = _QueryCondition;

parameters[7].Value = string.Empty;

DataSet ds = DbHelperSQL.RunProcedure("SP_Pagination ", parameters, "dd");

_TotalCount = GetTotalCount();

if (_TotalCount == 0)

{

_PageIndex = 0;

_PageCount = 0;

}

else

{

_PageCount = _TotalCount % _PageSize == 0 ? _TotalC ount / _PageSize : _TotalCount / _PageSize + 1;

if (_PageIndex > _PageCount)

{

_PageIndex = _PageCount;

parameters[4].Value = _PageSize;

ds = QueryDataTable();

}

}

return ds;

}

public int GetTotalCount()

{

string strSql = " select count(1) from "+_TableName;

if (_QueryCondition != string.Empty)

{

strSql +=" where " + _QueryCondition;

}

return int.Parse(DbHelperSQL.GetSingle(strSql).ToString ());

}

}

好了,在页面放个DATAGRIDVIEW 拖入控件pager

private void ReceiveOrderJLForm_Load(object sender, EventArgs e) {

this.pager1.PageCurrent = 1;

this.pager1.Bind();

}

private int dgvBind()

{

WindowsApp.MyControl.PageData pageData = new WindowsApp.

MyControl.PageData();

pageData.TableName = "T_ReceiveOrder";

pageData.PrimaryKey = "ReceiveOrderID";

pageData.OrderStr = "ReceiveOrderID desc";

pageData.PageIndex = this.pager1.PageCurrent;

pageData.PageSize = this.pager1.PageSize;

pageData.QueryCondition = _strSql + strWhere.ToString();

pageData.QueryFieldName = "*";

this.pager1.bindingSource.DataSource = pageData.QueryDa taTable().Tables[0];

this.pager1.bindingNavigator.BindingSource = pager1.bin dingSource;

dgvReceiveOrder.AutoGenerateColumns = false;

dgvReceiveOrder.DataSource = this.pager1.bindingSource;

return pageData.TotalCount;

}

private int pager1_EventPaging(WindowsApp.MyControl.EventPa gingArg e)

{

return dgvBind();

}

效果如下

https://www.360docs.net/doc/9111619241.html,/nosnowwolf/Pager.rar控件下载

C#(.net)分页控件源码(已测试)

分页控件的用法 align类: using System; namespace MyPaperControls { ///

/// Align 的摘要说明。 /// public enum Align { Center = 0, Left = 1, Right = 2 } } MyPager类: using System; using https://www.360docs.net/doc/9111619241.html,ponentModel; using System.Diagnostics; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Resources; using System.Collections; using System.Collections.Specialized; using System.Text; using System.Text.RegularExpressions; using System.Drawing; using https://www.360docs.net/doc/9111619241.html,pilerServices; using MyPaperControls.Designer; [assembly:TagPrefix("MyPaperControls", "MP")] namespace MyPaperControls { [ ToolboxData("<{0}:MyPaper runat=server>"), ValidationPropertyAttribute("Text"), Designer(typeof(MyPaperControls.Designer.MyPaperDesigner)), DescriptionAttribute("跳转到此页面") ] [ParseChildren(true)]

DevExpress控件之主题

DevExpress控件之主题 DevExpress控件的主题不仅多种多样,而且非常美观大方,以对完美观念不强的我们绝对是个惊喜,当然了,对于我们的用户也是一个福音,因为他们再对不用抱怨我人软件界面是如何的粗造了。 l 如何打造美丽的界面? l 如何快速的更换漂亮的主题? l 如何快速的使用类似于Offcie2007的操作面板? ...... 本节课程将一一解答,带您进入美轮美奂的DevExpress世界! 1. 如何建造可换主题的窗口程序 当我们打开或新建一个“Windows程序”,系统默认会有一个From,名称为From1。请注意,此时的”Form1”继承的是Windows自带的Form,即”System.Windows.Forms”。而这个Form是不会应用DevExpress的主题样式的。 那么我们怎么样才可以让Form应用这些样式呢? 当我们安装完DevExpress控件包之后,在添加新项窗口中我们会看到多出的几项:如图: 分别是:DevExpress Form v9.1、DevExpress RibbomForm v9.1和DevExpressUsercontrol v9.1,其中“v9.1”是版本号。 当我们在新建“Form”时,选择DevExpress Form为模板,就可以应用DevExpress的漂亮主题了。此时,From继承的是“DevExpress.XtraEditors.XtraForm”。默认情况下,系统主题有:* Caramel * Money Twins * Lilian * The Asphalt World * iMaginary * Black * Blue 这几种主题,具体效果自己写个例子看看吧! 但DevExpress提供了更多的主题,我们如果应用的话,必须添加以下引用: DevExpress..OfficeSkins.v9.1; DevExpress.BonusSkins.v9.1; 除此之外,必须在“Program.cs”文件在添加如下代码: [c-sharp] view plaincopy https://www.360docs.net/doc/9111619241.html,erSkins.OfficeSkins.Register(); https://www.360docs.net/doc/9111619241.html,erSkins.BonusSkins.Register(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (!DevExpress.Skins.SkinManager.AllowFormSkins) DevExpress.Skins.SkinManager.EnableFormSkins(); Application.Run(new frmMain()); 其中“OfficeSkins”中的主题有:

C# WinForm自定义控件开发实例

C# WinForm自定义控件开发实例 最近做一个图象的采集,需要一个图形的选择控件,但是在.net下没有类似vb中的shape控件,所以考虑了自己写一个控件。下面我将从头创建控件,这个控件主要是用来选择图形的Rectangle,有一下几个属性Color BorderColor:边框颜色,Color BackColor:背景颜色,bool ReSizeble:是否可移动,Rectangle SelectRectangle:选择区域。 打开vs2003(我用的这个版本),新建一个c#控件库,ok,拷贝如下代码到你的代码里。using System;using System.Collections;using https://www.360docs.net/doc/9111619241.html,ponentModel;using System.Drawing;using System.Data;using System.Windows.Forms;namespace WindowsExtendedControls{ /// /// 控件/// public class ShapeEx : System.Windows.Forms.Control { /// /// 必需的设计器变量。/// /// private Color _BorderColor=new Color(); private Color _BackColor=new Color(); private bool _ReSizeble; private Point _SelfLocation=new Point(); private Point _MouseLocation=new Point(); private int _SelfWidth; private int _SelfHeight; private int _SelectSelctedIndex;//0-8,0:SizeAll private Rectangle

Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件

https://www.360docs.net/doc/9111619241.html, Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件 本节课我们主要学习一下Bootstrap的四个组件功能:路径组件、分页组件、标签组件和徽章组件。 一.路径组件 路径组件也叫做面包屑导航。 //面包屑导航

  • 首页
  • 产品列表
  • 韩版2015年羊绒毛衣 二.分页组件 分页组件可以提供带有展示页面的功能。 //默认分页
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • https://www.360docs.net/doc/9111619241.html,

  • »
  • //首选项和禁用 1 2 //设置尺寸,四种lg、默认、sm和xs //翻页效果
  • 上一页
  • 下一页
  • //对齐翻页链接 上一页 下一页 //翻页项禁用 上一页 三.标签 //在文本后面带上标签

    SpringBoot实现分页插件

    实现分页插件的具体步骤: 1.导入jar包 com.github.pagehelper pagehelper-spring-boot-starter 1.2.5 org.springframework.boot spring-boot-starter-test test 2.(两种)在application.yml(propreties)文件加上 第一种:yml pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql 第二种:propreties pagehelper.helper-dialect=mysql pagehelper.reasonable=true pagehelper.support-methods-arguments=true pagehelper.params=count=countSql 3.在controller控制层编写代码 @GetMapping("/getAllPerson") public String getAllPerson(Model model,@RequestParam(defaultValue="1",value ="pageNum") Integer pageNum, String singleName){ PageHelper.startPage(pageNum,2); //设置当前页码,每页的行数 Listlist=aaService.getAllPerson(singleName); //查询的集合 PageInfopageInfo=new PageInfo(list); //把查询的集合放入pageInfo返回给页面 model.addAttribute("pageInfo",pageInfo); model.addAttribute("name",singleName); return"index"; } 4.编写页面 当前页,总页,共条记录 首页 上一页 下一页 尾页

    DEVEXPRESS 控件学习总结

    1、Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹出菜单(popup menus),我们需要把一个不可见的控件(component)BarManager(Navigation&Layout)拖放到这个窗体或用户控件上。这个控件维护工具条在窗体上的布局,处理用户的行为 (processes an end-user's actions),提供一些定制功能等等。这个控件维护工具条、工具条项、工具条项目录这三者的集合 (It maintains the collections of bars,bar items and bar item categories.)。所以我们可以使用bar manager的一些方法去添加、删除、访问这些工具条元素。 注意:1)一个窗体上只能放置一个bar manager控件。 2)由于BarManager控件与RibbonControl控件可能会彼此冲突,所以不推荐在同一个窗体或用户控件上同时使用工具条和Ribbon控件。 当把BarManager添加到一个窗体或用户控件上后,我们就可以使用上下文菜单(context menus)、bar manager的定制窗口或它的设计器来创建工具条和工具条命令(bar commands)了。 相关控件属性 1.1.2、Toolbars 工具条是一个可视的控件,它用来显示各个项目链接。我们可以在工具条内显示由XtraBars库提供的任意项目链接,比如:按钮(buttons),静态文本(static text),子菜单(submenu)、编辑器(editors)等等。 1.1.3、 Bar Items 为了把多种元素(比如按钮,子菜单,标签,编辑器等)添加到工具条和菜单,我们需要创建合适的bar items。一个bar item是一个实现了特定功能的非可见对象。它定义了一个相应的元素如何显示在屏幕上,并决定了对鼠标单击事件的相应。 我们可以使用bar manager的Customize窗体上的Commands页来创建bar items。为了在逻辑上组织这些item,我们经常将它们分类。该窗体的左侧面板里显示了有效的目录,右侧面板显示了属于当前选中目录的各个bar item。选中一个bar item可以在属性窗口看到其属性。 1.1.4、Popup Menus 使用弹出菜单(popup menus),我们可以在控件上显示上下文选项或命令。弹出菜单是一个显示了特定项的窗体,用户可以选择这些项以执行相应的操作。使用PopupMenu控件就可以在我们的应用程序中使用弹出菜单。 通过BarManager的“名称”+“上的PopupContenxtMenu”属性绑定PopuMenus控件 注意:

    JPAGES分页控件案例

    //需要导入的样式表,与js文件 /** *css *jPages.css控制分页按钮条的样式,不需要样式的可以不用导入 *animate.css控制要显示的数据的动画效果,不需要动画可以不用导入 *github.css这个不知道是搞什么的,不导入也没发现改变了什么 *js文件jPages.js和jquery肯定是必须的,其他的就看自己了 */ Js代码: $("#tbody").empty();//删除tbody中已经存在的数据 var str=""; $.ajax({ url:'jq/getShipInfoByShipName.action', data:{"shipName":$("#shipNameId").val()},//执行后台Action参数 dataType:'json', type:'post', //回调函数执行之前的动作 beforeSend:function(){ //这是我设置的一个加载中的图标,trShow为图标显示的行 //在数据加载出来之前,显示加载中这个图标,加载完成,隐藏 $('#trShow').css("display","block"); }, success:function(data){ var result=data; //返回数据位json格式,遍历json,拼凑成table中的行 for(var i=0;i"+result[i].shipName+" "+result[0].remark+""; } //追加如tbody中 $("#tbody").append(str);

    WinForm控件开发基础教程四控件属性

    WinForm控件开发基础教程四控件属性 前一篇文章介绍了常用的设计时Attribute。其中BrowsableAttribute,CategoryAttribute,DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉,可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了。下来我们主要介绍一下DesignerSerializationVisibilityAttribute和TypeConverterAttribute。 DesignerSerializationVisibilityAttribute的功能是指示一个属性是否串行化和如何串行化,它的值是一个枚举,一共有三种类型Content,Hidden,Visible。Content指示代码生成器为对象包含的内容生成代码,而不是为对象本身,Hidden指示代码生成器不为对象生成代码,visible指示代码生成器为对象生成代码。假如你的控件有一个集合属性,又想在设计时自动将集合属性的内容生成代码,那么就使用这个Attribute,并将值设为DesignerSerializationVisibility.Content。 TypeConverterAttribute的作用就更大一些,也稍微复杂一些。TypeConverterAttribute主要的目的是为属性指定一个类型转换器,这个转化器可以将属性的值转换城其它的类型。.NET 框架已经为大部分常用的类型都提供了类型转换器,比如Color就有ColorConverter,枚举类型就有EnumConverter,等等,所以一般情况下你没有必要写类型转换器,如果你的属性的特殊的类型或者自定义的类型那么就必须要写了。类型转换器都是从https://www.360docs.net/doc/9111619241.html,ponentModel.TypeConverter派生出来的,你需要重写其中的一些方法来达到转换的目的,在我们开发的过程中,其实只关心属性的值如何转换成字符串(因为属性的值需要在属性浏览器里显示出来,属性浏览器里显示的都是字符串)和源代码(需要自动为属性的值生成源代码以实现持久化),当然反过来,也要将字符串和源代码转换成属性的值。另外使用TypeConverter也可以实现子属性,让属性的子属性也显示在属性浏览器里,并且可以折叠。 接下来我就写一个简单的控件来演示一下这个控件。代码如下: using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Drawing; using https://www.360docs.net/doc/9111619241.html,ponentModel; using System.Collections; namespace CustomControlSample { public class MyListControl:System.Windows.Forms.Control { private List_list=new List(); public MyListControl()

    GridView控件自定义分页详解

    GridView控件自定义分页详解 在这里我们将用一个隐藏字段来保存这个PageIndex,即当前页码.当点击上一页时,将它的值减一,知道为0,要注意的一点这里的第一页页码是0而不是1.下面看看代码,然后我们再分析分析! 1 2 3 4 6 7 9 10 11

    12 13 首页 14 上一页 15 下一页 16 尾页 17
    CS文件中的代码: 1 protected void PagerButton_Click(object sender, EventArgs e) 2 { 3 int pageIndx = Convert.ToInt32(CurrentPage.Value); 4 int totals = NewsManager.GetNews(0, pageSize).TotalRecords; 5 int pages = (totals % pageSize) == 0 ? (totals / pageSize) : (totals / pageSize + 1); 6 string arg = ((LinkButton)sender).CommandArgument.ToString().ToLower(); 7 switch (arg) 8 { 9 case "prev": 10 if (pageIndx > 0) 11 { 12 pageIndx -= 1; 13 } 14 break; 15 case "next": 16 if (pageIndx < pages - 1)

    C# WinForm窗体及其控件的自适应

    C# WinForm窗体及其控件的自适应 C# WinForm窗体及其控件自适应各种屏幕分辨率 一。说明 我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观。实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可。因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标。 在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化。为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗体和其控件的初始位置和大小,2.根据窗体变化了的大小,成比例地实现其控件的水平和垂直方向的变化,也就是自适应。 二。使用方法 使用方法很简单, 1.把自适应的类整体复制到你的工程命名空间里, 然后在需要自适应的窗体中做3步即可: 2.声明自适应类实例。 3.为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件初始位置和大小 4.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 三。完整代码如下: (一)。自适应窗体的代码: using System; using System.Collections.Generic;

    using https://www.360docs.net/doc/9111619241.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { //1.声明自适应类实例 AutoSizeFormClass asc = new AutoSizeFormClass(); public Form1() { InitializeComponent(); } //2. 为窗体添加Load事件,并在其方法Form1_Load中,调用类的初始化方法,记录窗体和其控件的初始位置和大小 private void Form1_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); } //3.为窗体添加SizeChanged事件,并在其方法Form1_SizeChanged中,调用类的自适应方法,完成自适应 private void Form1_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }

    winform中DataGridView实现分页功能

    winform中DataGridView实现分页功能 在winform的设计中,要实现对DataGridView控件的分页功能,需要两个控件:BindingSource、BindingNavigator,根据需求可对BindingNavigator进行自由的扩展,下图的示例则是根据一般需求对分页功能的实现。红色区域是对BindingNavigator控件扩展后的效果。 具体实现过程: //窗体构造方法中定义分页所需变量: int pageSize = 0; //每页显示行数 int nMax = 0; //总记录数 int pageCount = 0; //页数=总记录数/每页显示行数 int pageCurrent = 0; //当前页号 int nCurrent = 0; //当前记录行 DataTable dtInfo = new DataTable(); //存取查询数据结果 //分页功能实现

    public void InitDataSet() { //判断每页显示记录数是否为空,在初始话窗体时为真 if (txtRecordNumOfPage.Text.Trim() == "") { try { //pageSize = Convert.ToInt16(ConfigurationManager.AppSettings["PageSize"]); //设置页面行数 //读取配置文件中设置的每页显示条数 string szConfigFileName = Application.ExecutablePath + ".config"; XmlDocument doc = new XmlDocument(); doc.Load(szConfigFileName); XmlNode root = doc.SelectSingleNode("configuration"); XmlNode node = root.SelectSingleNode("appSettings/add[@key='PageSize']"); XmlElement el = node as XmlElement; pageSize = Convert.ToUInt16(el.GetAttribute("value")); } catch { } if (pageSize == 0) {

    DevExpress控件的GridControl控件小结

    目录 1. DevExpress控件组中的GridControl控件不能使横向滚动条有效。 (2) 2. 使单元格不可编辑。 (2) 3. 没有下拉滚动条事件怎么办? (2) 4. 获取选定行,指定列单元格的内容 (2) 5. 去除"Drag a Column Header Here To Group by that Column" (3) 6. 在gridcontrol中添加checkbox复选框 (3) 7. 单元格合并问题 (4) 8. gridView 奇行与偶行交替变色 (4) 9. girdView在第一列显示行号 (4) 10. 选中某列进行排序时,如何让该列高亮显示 (5) 11. XtraGrid冻结列 (5)

    (由于开始使用DevExpress控件了,所以要点滴的记录一下) 1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。 现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。 解决: gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。 2.使单元格不可编辑。 gridcontrol -->gridview -->OptionsBehavior -->Editable=false 3.没有下拉滚动条事件怎么办? 现象:因为需要加载大数据量数据,所以不能一次把所有数据读入datatable进行绑定,所以决定在用户进一步浏览数据时进行数据的实时加载工作,就是每当用户拉动滚动条时,多加载一些数据进入datatable.没有找到合适的滚动条事件,于是用这个事件代替了,非常合适我的需求. TopRowChanged事件. 4.获取选定行,指定列单元格的内容 private string GetSelectOID() { int[] pRows = this.gridView1.GetSelectedRows(); if (pRows.GetLength(0) > 0) return gridView1.GetRowCellValue(pRows[0], mOIDFiledName).ToString (); else return null; } //mOIDFiledName为要获取列的列名

    winform窗体和控件自适应

    有时winform窗体的大小会改变,此时窗体上的控件会很混乱,如何可以使控件自适应窗体呢?以 下就是方法: 1、首先在自己的命名空间里先建一个Autosize.cs类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; namespace 自己的命名空间 { class Autosize { public void setTag(Control cons) { foreach (Control con in cons.Controls) { con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) setTag(con); } } string[] mytag; public void setControls(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { if (con.Tag != null) { mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * Math.Min(newx, newy); }

    js多功能分页组件layPage使用方法详解

    这篇文章主要为大家详细分享了laypage分页控件使用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文的主要目的就是为大家分享layPage 多功能的js分页组件具体操作方法,供大家参考,具体内容如下 php 部分 function index(){   header('Content-Type:text/html;charset=utf-8');   // 获取当前页码,默认第一页,设置每页默认显示条数   $nowpage = I('get.page', 1, 'intval');   $limits = 8;   // 获取总条数   $count = M('Article') -> where(array('status'=>array('egt', 0))) -> count();   // 计算总页面   $allpage = ceil($count / $limits);   $allpage = intval($allpage);   $lists = M('Article') -> where(array('status'=>array('egt', 0)))           -> page($nowpage, $limits) // page 方法分页          -> order('createtime desc')           -> select();   // 跳转分页输出   $this -> assign('lists', $lists);   $this -> assign('allpage', $allpage);   $this -> assign('nowpage', $nowpage);   $this->display();   /*   // ajax 分页输出   $info = array('lists'=>$lists,'allpage'=>$allpage,'nowpage'=>$nowpage);   $this->ajaxReturn($info,'json');   */  } js 中laypage(新版本) 跳转分页 // 分页 laypage({   cont: 'show_pages', // 分页容器   pages: "{$allpage}",   // 总页数   skip: true, //是否开启跳页   curr: function(){     var page = "{$nowpage}"; // 当前页(后台获取到的)     return page ? page : 1; // 返回当前页码值   }(),   jump: function(e, first){ //触发分页后的回调(单击页码后)     if(!first){ //一定要加此判断,否则初始时会无限刷新

    第三方控件(DevExpress)使用大全【个人开发过程中整理收集】

    第三方控件使用大全 【张杰章开发过程中整理】 一、ComboBoxEdit 1、如何使其不可编辑 TextEditStyle 设置为:DisableTextEditor 2、如何设置鼠标为手形 Cursor 设置为:Hand 二、GridControl 1、如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2、如何新增一条记录 (1)、gridView.AddNewRow() (2)、实现gridView_InitNewRow事件 3、如何解决GridControl记录能获取而没有显示出来的问题 gridView.populateColumns(); 4、如何让行只能选择而不能编辑(或编辑某一单元格) (1)、View->OptionsBehavior->EditorShowMode 设置为:Click (2)、View->OptionsBehavior->Editable 设置为:false 5、如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 6、如何隐藏GridControl的GroupPanel表头 设置Run Design->OptionsView->ShowGroupPanel 设置为:false 7、如何禁用GridControl中列头的过滤器 过滤器如下图所示: 设置Run Design->OptionsCustomization->AllowFilter 设置为:false 8、如何在查询得到0条记录时显示自定义的字符提示/显示 如图所示:

    Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果

    这篇文章主要介绍了Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧 Bootstrap Paginator分页插件下载地址: DownloadVisit Project in GitHub 1.这是需要分页的页面放的js函数: <span style="font-size:14px;">function paging(page){  $.ajax({  type: "GET",  url: "${ctx}/api/v1/user/1/"+(page-1)+"/5",  dataType:"json",  success: function(msg){  ....//省略(查询出来数据)  }  });  $.ajax({  type: "GET",  url:"${ctx}/api/v1/user/count/1",  dataType:"json",  success:function(msg){  var pages = Math.ceil(msg.data/5);//这里data里面有数据总量  var element = $('#pageUl');//对应下面ul的ID  var options = {  bootstrapMajorVersion:3,  currentPage: page,//当前页面  numberOfPages: 5,//一页显示几个按钮(在ul里面生成5个li)  totalPages:pages //总页数  }  element.bootstrapPaginator(options);  }  });  }</span>  页面: <span style="font-size:14px;"><ul class="pagination" id="pageUl">  </ul></span> *li里面自动生成的 2.最重要也是最核心的是要自己改下bootstrap-paginator.js源文件,如下: <span style="font-size:14px;">onPageClicked: function (event, originalEvent, type, page) {  //show the corresponding page and retrieve the newly built item related to the page clicked before for the event return  var currentTarget = $(event.currentTarget);  switch (type) { 

    相关文档
    最新文档