当前位置:文档之家› Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码)

Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码)

Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码)
Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码)

Winform分页控件重大更新,并实现普通版、DotNetBar、DevExpress三大版本整合更新(附各种例子源码)

在Winform开发中,一直离不开分页处理,好的分页控件封装,能为开发节省很多时间和繁琐工作,对分页控件一直的改进和完善,也是我的兴趣之一。本次主要实现对分页控件的全面重构,优化功能及界面的处理,并统一完成普通版、基于DotNetbar界面控件版本、DevExpress界面控件版本三大版本的发布,这几个界面版本,除了界面表现效果不一样外,所有的功能展示及使用代码完全一致,保证用户的知识投资及给客户良好的使用操作。本次主要增加的功能有:可通过界面设置列表显示的列,可复制选定的行信息,可设置显示的行号、可设置显示间隔行的颜色等功能。下面分别对几个例子的截图进行总体介绍,然后在详细介绍

1)普通版(即不引用任何第三方界面控件)效果图

上图中,红色的菜单是分页控件内置的菜单项,其他程序附加是扩展菜单项目,其中复制选定行信息、设置表格显示列、打印列表是对表格基本的操作功能。下面两个版本的控件右键菜单均表现一致。

2)基于DotNetbar界面控件版本

3)基于DevExpress界面控件版本

使用分页控件的基础代码,在所有以上版本中,代码均一致,只是一些特殊的操作,需要利用到不同的控件,有所差异而已。初始化分页控件代码如下所示。

private void FrmCustomer_Load(object sender, EventArgs e)

{

this.winGridViewPager1.ProgressBar = this.toolStripProgressBar1.Pro gressBar;

this.winGridViewPager1.OnPageChanged += new EventHandler(winG ridViewPager1_OnPageChanged);

this.winGridViewPager1.OnStartExport += new EventHandler(winGrid ViewPager1_OnStartExport);

this.winGridViewPager1.OnEditSelected += new EventHandler(winGri dViewPager1_OnEditSelected);

this.winGridViewPager1.OnDeleteSelected += new EventHandler(win GridViewPager1_OnDeleteSelected);

this.winGridViewPager1.OnRefresh += new EventHandler(winGridVie wPager1_OnRefresh);

this.winGridViewPager1.OnAddNew += new EventHandler(winGridVie

wPager1_OnAddNew);

this.winGridViewPager1.AppendedMenu = this.contextMenuStrip1;//

追加额外菜单项目

this.winGridViewPager1.ShowLineNumber = true;//显示行号

this.winGridViewPager1.PagerInfo.PageSize = 30;//页面大小

this.winGridViewPager1.EventRowBackColor = Color.LightCyan;//间隔颜色

BindData();

}

以上是对分页控件的相关事件进行处理,如果实现了相关的事件,那么相应的菜单(如新增、编辑、删除等)就会在右键菜单中出现,否则不会出现,相应的事件就是具体对应操作的处理菜单操作。另外,分页控件的一些属性,如是否显示行号、页面显示记录大小、间隔颜色等属性也可以在这里设置。

这些初始化设置完成后,一般查询界面都会有一个条件的组合,然后通过组合条件查询数据库记录并显示,显示的时候,分页控件可以设置对应字段的中文显示名称,显示的字段列,显示顺序等。显示字段的顺序就是列表的显示顺序,这个特性也是新版本增加的功能之一。

private void winGridViewPager1_OnPageChanged(object sender, EventA rgs e)

{

BindData();

}

///

///根据查询条件构造查询语句

///

///

private string GetSearchSql()

{

SearchCondition condition = new SearchCondition();

condition.AddCondition("Number", this.txtNumber.Text, SqlOperator. Like)

.AddCondition("Name", this.txtName.Text, SqlOperator.Like)

.AddCondition("Type", this.cmbType.Text, SqlOperator.Like)

.AddCondition("Area", this.cmbArea.Text, SqlOperator.Like)

.AddCondition("Address", this.txtAddress.Text, SqlOperator.Like)

.AddCondition("Company", this.txtCompany.Text, SqlOperator.Like) .AddCondition("Note", this.txtNote.Text, SqlOperator.Like)

.AddCondition("Telephone1", this.txtTelephone.Text, SqlOperator.L ike, true, "Telephone")

.AddCondition("Telephone2", this.txtTelephone.Text, SqlOperator.L ike, true, "Telephone")

.AddCondition("Telephone3", this.txtTelephone.Text, SqlOperator.L ike, true, "Telephone")

.AddCondition("Telephone4", this.txtTelephone.Text, SqlOperator.L ike, true, "Telephone")

.AddCondition("Telephone5", this.txtTelephone.Text, SqlOperator.L ike, true, "Telephone");

if (chkUseDate.Checked)

{

condition.AddCondition("CreateDate", dateTimePicker1.Value.ToStr ing("yyyy-MM-dd"), SqlOperator.MoreThanOrEqual, true)

.AddCondition("CreateDate", dateTimePicker2.Value.AddDays(1 ).ToString("yyyy-MM-dd"), SqlOperator.LessThanOrEqual, true);

}

string where = condition.BuildConditionSql().Replace("Where", "");

return where;

}

private void BindData()

{

#region添加别名解析

//DisplayColumns与显示的字段名或者实体属性一致,大小写不敏感,顺序代表显示顺序,用逗号或者|分开

this.winGridViewPager1.DisplayColumns = "Number,NAME,type,Area, Company,Address,Telephone1,Telephone2,Telephone3,Telephone4,Telephone

5,CreateDate,Note,LastUpdated";

this.winGridViewPager1.AddColumnAlias("ID", "编号");

this.winGridViewPager1.AddColumnAlias("Number", "客户编号");

this.winGridViewPager1.AddColumnAlias("Name", "客户名称");

this.winGridViewPager1.AddColumnAlias("Type", "客户类型");

this.winGridViewPager1.AddColumnAlias("Area", "客户地区");

this.winGridViewPager1.AddColumnAlias("Company", "客户单位");

this.winGridViewPager1.AddColumnAlias("Address", "客户地址");

this.winGridViewPager1.AddColumnAlias("Telephone1", "电话1");

this.winGridViewPager1.AddColumnAlias("Telephone2", "电话2");

this.winGridViewPager1.AddColumnAlias("Telephone3", "电话3");

this.winGridViewPager1.AddColumnAlias("Telephone4", "电话4");

this.winGridViewPager1.AddColumnAlias("Telephone5", "电话5");

this.winGridViewPager1.AddColumnAlias("CreateDate", "开户日期");

this.winGridViewPager1.AddColumnAlias("Shop_ID", "分店ID");

this.winGridViewPager1.AddColumnAlias("Note", "备注");

this.winGridViewPager1.AddColumnAlias("LastUpdated", "更新日期");

#endregion

string where = GetSearchSql();

this.winGridViewPager1.DataSource = BLLFactory.Instan ce.Find(where, this.winGridViewPager1.PagerInfo);

}

private void btnSearch_Click(object sender, EventArgs e)

{

BindData();

}

很多人以前看过我介绍分页控件的用法的时候,总会觉得上面的数据绑定方式看似简单,实际操作可能绑定数据总是有问题,因为不知道Find函数里面需要实现那些操作,因为这些是基于我框架的应用逻辑。其实Find方法就是根据分页属性计算获取对应记录,然后把总记录数赋值给分页控件的属性。

下面我们来介绍一个不需要依赖我的Winform框架类,只是引用微软EnterpriseLibary 数据库操作类即可完成的操作,因为最新的分页控件集成了一个基于Oracle、SqlServer、Access、Mysql数据库的分页逻辑,只需要使用PagerHelper这个类,传入相关的参数即可。

分页控件绑定数据如下代码所示。

private void BindData()

{

#region添加别名解析

//DisplayColumns与显示的字段名或者实体属性一致,大小写不敏感,顺序代表显示顺序,用逗号或者|分开

this.winGridViewPager1.DisplayColumns = "Number,NAME,type,Area, Company,Address,Telephone1,Telephone2,Telephone3,Telephone4,Telephone 5,CreateDate,Note,LastUpdated";

this.winGridViewPager1.AddColumnAlias("ID", "编号");

this.winGridViewPager1.AddColumnAlias("Number", "客户编号");

this.winGridViewPager1.AddColumnAlias("Name", "客户名称");

this.winGridViewPager1.AddColumnAlias("Type", "客户类型");

this.winGridViewPager1.AddColumnAlias("Area", "客户地区");

this.winGridViewPager1.AddColumnAlias("Company", "客户单位");

this.winGridViewPager1.AddColumnAlias("Address", "客户地址");

this.winGridViewPager1.AddColumnAlias("Telephone1", "电话1");

this.winGridViewPager1.AddColumnAlias("Telephone2", "电话2");

this.winGridViewPager1.AddColumnAlias("Telephone3", "电话3");

this.winGridViewPager1.AddColumnAlias("Telephone4", "电话4");

this.winGridViewPager1.AddColumnAlias("Telephone5", "电话5");

this.winGridViewPager1.AddColumnAlias("CreateDate", "开户日期");

this.winGridViewPager1.AddColumnAlias("Shop_ID", "分店ID");

this.winGridViewPager1.AddColumnAlias("Note", "备注");

this.winGridViewPager1.AddColumnAlias("LastUpdated", "更新日期");

#endregion

string where = GetSearchSql();

this.winGridViewPager1.DataSource = FindToDataTable(where, this.w

inGridViewPager1.PagerInfo);

}

FindToDataTable函数的相关实现代码如下所示:

///

///标准的记录查询函数

///

///

///

///

private DataTable FindToDataTable(string where, PagerInfo pagerInfo) {

WHC.Pager.WinControl.PagerHelper helper = new WHC.Pager.WinCon trol.PagerHelper("All_Customer", "*", "LastUpdated", pagerInfo.PageSize, pag erInfo.CurrenetPageIndex, true, where);

string countSql = helper.GetPagingSql(WHC.Pager.WinControl.Databa seType.Access, true);

string dataSql = helper.GetPagingSql(WHC.Pager.WinControl.Databas eType.Access, false);

string value = SqlValueList(countSql);

pagerInfo.RecordCount = Convert.ToInt32(value);//为了显示具体的信息,需要设置总记录数

DataTable dt = SqlTable(dataSql);

return dt;

}

///

///执行SQL查询语句,返回查询结果的所有记录的第一个字段,用逗号分隔。

///

///SQL语句

///

///返回查询结果的所有记录的第一个字段,用逗号分隔。

///

public string SqlValueList(string sql)

{

StringBuilder result = new StringBuilder();

Database db = DatabaseFactory.CreateDatabase();

DbCommand command = db.GetSqlStringCommand(sql);

using (IDataReader dr = db.ExecuteReader(command))

{

while (dr.Read())

{

result.AppendFormat("{0},", dr[0].ToString());

}

}

string strResult = result.ToString().Trim(',');

return strResult;

}

///

///执行SQL查询语句,返回所有记录的DataTable集合。

///

///SQL查询语句

///

public DataTable SqlTable(string sql)

{

Database db = DatabaseFactory.CreateDatabase();

DbCommand command = db.GetSqlStringCommand(sql);

return db.ExecuteDataSet(command).Tables[0];

}

利用控件内置的分页辅助类

WHC.Pager.WinControl.PagerHelper,你就可以不用理会各种不同数据库的分页实现逻辑,只需要按照以上的调用方式调用即可,该类传入的第一个参数,既可以是表名,也可以是一段查询语句,非常方便各种复杂条件的查询分页。

最新分页控件的相关界面截图如下所示。1)设置表格列的可见性

2)表格数据打印预览

3)行数据基本信息提示

4)复制选定行后在文本中查看

为了使得大家对我的Winform分页控件在不同情况下的深入了解和使用,我特意编写了几种情况下的使用标准例子,供大家下载学习研究,例子包括利用基于泛型模式的Winform 开发框架结构的分页控件使用例子,基于传统简单数据绑定的分页控件使用例子,基于DotNetBar界面控件及简单数据绑定的分页控件使用例子,基于DevExpress界面控件及简单数据绑定的分页控件使用例子,如下图所示。

各种例子的源码的下载地址如下:

https://www.doczj.com/doc/7e17013791.html,/download/TestWinPager_Demo.rar

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

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

/// Align 的摘要说明。 /// public enum Align { Center = 0, Left = 1, Right = 2 } } MyPager类: using System; using https://www.doczj.com/doc/7e17013791.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.doczj.com/doc/7e17013791.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)]

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.doczj.com/doc/7e17013791.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.doczj.com/doc/7e17013791.html, Bootstrap组件功能:路径组件、分页组件、标签组件和徽章组件 本节课我们主要学习一下Bootstrap的四个组件功能:路径组件、分页组件、标签组件和徽章组件。 一.路径组件 路径组件也叫做面包屑导航。 //面包屑导航

  • 首页
  • 产品列表
  • 韩版2015年羊绒毛衣 二.分页组件 分页组件可以提供带有展示页面的功能。 //默认分页
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • https://www.doczj.com/doc/7e17013791.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.编写页面 当前页,总页,共条记录 首页 上一页 下一页 尾页

    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.doczj.com/doc/7e17013791.html,ponentModel.TypeConverter派生出来的,你需要重写其中的一些方法来达到转换的目的,在我们开发的过程中,其实只关心属性的值如何转换成字符串(因为属性的值需要在属性浏览器里显示出来,属性浏览器里显示的都是字符串)和源代码(需要自动为属性的值生成源代码以实现持久化),当然反过来,也要将字符串和源代码转换成属性的值。另外使用TypeConverter也可以实现子属性,让属性的子属性也显示在属性浏览器里,并且可以折叠。 接下来我就写一个简单的控件来演示一下这个控件。代码如下: using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Drawing; using https://www.doczj.com/doc/7e17013791.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.doczj.com/doc/7e17013791.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) {

    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){ //一定要加此判断,否则初始时会无限刷新

    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) { 

    如何在WPF中使用Windows Form控件

    如何在WPF中使用Windows Form控件 由于WPF中没有没有DateTimePicker控件,网上有人写的又不太好用,而在WinForm中有此控件,因此想到了从.net中借用此控件。 首先,我们需要向项目中的引用(reference)中添加两个动态库dll,一个是.NET库中的System.Windows.Forms,另外一个是WindowsFormsIntegration。组件不好找,排一下序就比较容易了。

    添加完两个动态dll以后,就可以在控件库中找到WindowsFormsHost这个控件了。这个控件是我们添加Windows Form控件的基础。跟别的其他的控件一样,它也是可控的,可以自定义它在窗口中的位置、控件大小颜色等属性。 将这个控件放入窗体,放置完以后在xmal代码中会自动生成相应代码: 然后,需要在xmal的开始处添加两行代码 xmlns:WinFormHost="clr-namespace:System.Windows.Forms.Integration;assembly=W indowsFormsIntegration" xmlns:WinFormControls="clr-namespace:System.Windows.Forms;assembly=System.Wi ndows.Forms"

    jquery分页插件_可随意改变样式

    1.JQpage源码 /** *pluginname:JQpage *version1.0 *authoryqm *企鹅:2-3-8-7-5-0-3-1-0-6 *time:2015-12-8 *Explain:在一次项目开发中,前期项目使用了easyui,但是客户比较BT,说easyui的datagrid太丑!!于是没办法只有自己写一个分页, *但是又不想改变后台java代码,所以就以easyui的datagrid后台返回格式数据,写了一个前端的jquery分页插件。 *本插件主要立足于尽可能的满足所有表格样式需求,所以完全可以自己定制你想要的所有样式,绝对兼容easyui返回的后端json数据,然后又能完美的扩展其它组件, *皆可以自定义做所有你能想到的事情,目前版本提供的是一个较为基础的分页版本,相信有一定js基础的人,都能很方便的扩展。 * *该插件放到网络上分享给大家,若是大家有更好的建议,或者对插件做了变更,希望你能把变更并且优秀的代码也分享给我,大家一起学习完善 *有需要帮助的同学也可以Q我 * */ var StringBuffer = function(){ this._strings = new Array(); }; StringBuffer.prototype.append=function(str){ this._strings.push(str); returnthis; }; StringBuffer.prototype.toString=function(){ returnthis._strings.join(""); }; var JQpage = function(){ this.page=1;//起始页 this.rows=10;//每页显示的行数 this.url=null;//获取远程数据的地址 this.params='';//远程访问的参数,可直接使用$('#form').serialize() this.tableTarget=null;//表格,带选择符 this.pageTarget=null;//分页控制区域,带选择符 this.data=null;//分页数据 this.fields=null;//所有字段 this.rowColor=['#FFF','#F7F8FA'];//隔行换色的两种颜色

    WinForm界面布局

    WinForm界面布局 Dock&Anchor Dock和Anchor是水火不容的,同时给控件设置Dock和Anchor属性时后设置的会覆盖前面的设置。 Dock 我初接触WinForm的时候发现控件的Width和Height只能是int,不能设置为百分比,那个时候就想子控件如何跟着父控件而变化呢?父控件变大就变大,而且还填满那个区域。甚至以为这个需要通过代码来解决,如是在SizeChanged事件里…… 后来才发现我要的就是Dock给的,Dock是停靠的意思。Dock属性的类型是DockStyle枚举: 1:public enum DockStyle 2:{ 3:None=0, 4:Top=1, 5:Bottom=2, 6:Left=3, 7:Right=4, 8:Fill=5 9:} 默认是None,当为Left的时,就表示子控件停靠在父控件的左边区域,并把左区域填充满: 上图中的Panel总是会停靠在Form的左边区域,不管如何调整Form的高度,它总是能把左边区域填满。Dock麻烦的地方在于多个控件碰到一起时,比如有两个Panel都设置为Left 该怎么办?我们会发现向父控件的Controls集合中添加子控件,越晚添加具有更高的“优先级”(不知道有没有这个说法,这是我杜撰的)。这里的优先级指的是,子控件“优先级”越高,

    越靠近父控件边缘,其他子控件就得避让: [我的见解;通过选中控件,一般是pannel,右键选择置为底层,来决定控件间的优先级] this.Controls.Add(this.panel1); this.Controls.Add(this.panel2); Panel2后添加进去,所以它具有更高的优先级,更靠近Form的边缘。这个规则不仅仅对于Dock都设为Left的有效,对Dock属性不同,但是碰到一起的子控件也适用: 1:this.panel1.Dock=DockStyle.Left; 2:this.panel2.Dock=DockStyle.Left; 3:this.panel3.Dock=DockStyle.Top; 4: 5:this.Controls.Add(this.panel1); 6:this.Controls.Add(this.panel2); 7:this.Controls.Add(this.panel3); panel3的Dock设置为Top,最后添加到Controls集合中,所以具有最高的优先级,其他两个panel都得避让:

    基于jQuery 常用控件收集

    Horizontal accordion: jQuery 基于jQuery开发,非常简单的水平方向折叠控件。 Horizontal accordion: jQuery jQuery-Horizontal Accordion 具有XBOX360 blade界面风格的水平方向Accordion。 jQuery-Horizontal Accordion AutoComplete-JQuery jQuery插件易于集成到现在的表单中(Form)。 AutoComplete-JQuery Facebook like Autocomplete 基于jQuery开发,类似于FaceBoox提供的AutoCompleter。 Facebook like Autocomplete jQuery Autocomplete Mod jQuery Autcomplete插件。能够限制下拉菜单显示的结果数。 jQuery Autocomplete Mod jqac 基于Jquery开发的Autocomplete插件。具有易于使用,配置简单,既可以利用Ajax读取数据也可以直接从本地获取数据。 jqac jQuery Tag Suggestion 类似于https://www.doczj.com/doc/7e17013791.html,提供的tag suggesting功能。 jQuery Tag Suggestion Autocomplete-jQuery ajax 利用jQuery(Ajax),PHP和MySQL开发的AutoCompleter。

    Autocomplete-jQuery ajax jQuery.Suggest 跨浏览器支持,基于jQuery开发的Autocomplete library。 jQuery.Suggest Autocomplete- jQuery plugin 一个jQuery Autocompleter,提供缓存选项来限制对服务器的请求。 Autocomplete- jQuery plugin jquery-aop 为JavaScript增加面向方面编程特性的jQuery插件。它能给任何函数添加Advices(Before、After与Around)。 jquery-aop jQuery Pagination jQuery分页插件 jQuery Pagination Facebox Facebox是一个基于jQuery,Facebook-style的lightbox。能够展示示images,divs或者整个远程页面。 Facebox jwysiwyg WYSIWYG jQuery插件。整个编辑器文件大小只有17Kb。 jwysiwyg Flexigrid Flexigrid是一个类似于Ext Gird,但基于jQuery开发的Grid。它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等。Flexigrid 显示的数据能够通过Ajax获取或者从一个普通的表格转换。

    文本预览
    相关文档 最新文档