ASP.NET自定义分页控件

2008.11.15 / 标签: / 分类: ASP.NET

这次开发的CRM中有许多地方都使用到了ASP.NET中的GridView控件,这个控件的功能其实都是很全的,但是此次开发中不允许使用控件自带的分页,而是要求开发人员自己写。由于自己写的分页代码比较多,且项目中使用的GridView控件也是很多,为了偷懒+减少代码量…于是昨天晚上花了点时间做了这么个自定义WEB用户控件,写的时候也遇到了些问题,不过随着逐步的分析都逐一解决了,以下是该控件的源码。

 
  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.Security;
  7. using System.Web.UI;
  8. using System.Web.UI.WebControls;
  9. using System.Web.UI.WebControls.WebParts;
  10. using System.Web.UI.HtmlControls;
  11. using System.Collections.Generic;
  12.  
  13. /**
  14.  * 功能:对GridView数据分页
  15.  * 作者:Neeke
  16.  * 版权所有:尼克技术博客 http://www.ineeke.com
  17.  * */
  18. public partial class WebUserControl : System.Web.UI.UserControl
  19. {
  20.     PagedDataSource pds = new PagedDataSource();
  21.     //待分页的数据源
  22.     public IEnumerable DataSource;
  23.     //每页显示数据条数
  24.     public int pageSize = 10;
  25.     //待分页显示的GridView对象
  26.     public GridView PageGridView;
  27.     //当前页
  28.     public int CurrentPage
  29.     {
  30.         get { return (Int32)ViewState["CurrentPage"]; }
  31.         set { ViewState["CurrentPage"] = value; }
  32.     }
  33.     //分页个数
  34.     public int Count
  35.     {
  36.         get { return (Int32)ViewState["Count"]; }
  37.         set { ViewState["Count"] = value; }
  38.     }
  39.  
  40.     //数据绑定
  41.     public void PageDataBind()
  42.     {
  43.         if (!IsPostBack)
  44.         {
  45.             CurrentPage = 0;
  46.             Count = 0;
  47.         }
  48.         //用于判断是否越界
  49.         if (CurrentPage > Count || CurrentPage < 0)
  50.         {
  51.             return;
  52.         }
  53.         try
  54.         {
  55.             pds.DataSource = DataSource;
  56.             pds.AllowPaging = true;
  57.             pds.PageSize = pageSize;
  58.             pds.CurrentPageIndex = CurrentPage;
  59.             Count = pds.PageCount;
  60.             this.lblTotalCount.Text = pds.DataSourceCount.ToString();
  61.             this.lblPageSize.Text = pageSize.ToString();
  62.             this.lblCurrentPage.Text&nbs
    p;= Convert.ToString(CurrentPage + 1);
  63.             this.lblTotalPage.Text = Convert.ToString(Count);
  64.             PageGridView.DataSource = pds;
  65.             PageGridView.DataBind();
  66.         }
  67.         catch (Exception ex)
  68.         {
  69.             Response.Write("<script>alert(‘没有您输入的页!’);</script>");
  70.         }
  71.     }
  72.     //第一页按钮按下时触发
  73.     protected void LinkFirst_Click(object sender, EventArgs e)
  74.     {
  75.         CurrentPage = 0;
  76.         PageDataBind();
  77.     }
  78.     //前一页按钮按下时触发
  79.     protected void LinkPrie_Click(object sender, EventArgs e)
  80.     {
  81.         if (CurrentPage <= 0)
  82.         {
  83.             CurrentPage = 0;
  84.         }
  85.         else
  86.         {
  87.             CurrentPage = CurrentPage-1;
  88.         }
  89.         PageDataBind();
  90.     }
  91.     //下一页按钮按下时触发
  92.     protected void LinkNext_Click(object sender, EventArgs e)
  93.     {
  94.         if (CurrentPage >= (Count - 1))
  95.         {
  96.             CurrentPage = Count - 1;
  97.         }
  98.         else
  99.         {
  100.             CurrentPage=CurrentPage+1;
  101.         }
  102.         PageDataBind();
  103.     }
  104.     //最后一页按钮按下时触发
  105.     protected void LinkLast_Click(object sender, EventArgs e)
  106.     {
  107.         CurrentPage = Count - 1;
  108.         PageDataBind();
  109.     }
  110.     //GO按钮按下时触发
  111.     protected void btnGo_Click(object sender, EventArgs e)
  112.     {
  113.         CurrentPage = int.Parse(this.txtGoPage.Text)-1;
  114.         PageDataBind();
  115.     }
  116. }

使用方法:
1.将此控件拖入到网页中。
2.在该网页的Page_Load()事件中写入如下代码。

 
  1. protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.         this.WebUserControl1.DataSource = SaleChanceManager.GetChanceAll();//设置待数据源
  4.         this.WebUserControl1.pageSize = 5;//设置每页数据条数
  5.         this.WebUserControl1.PageGridView = this.GridView1;//设置待分页的GridView
  6.         this.WebUserControl1.PageDataBind();//调用绑定方法
  7.     }

ConfirmButtonExtender控件

2008.10.20 / 标签: ,, / 分类: ASP.NET
Sofa

5步就能学会使用这个ConfirmButtonExtender控件,半个代码都不需要你手动去写,微软出品的东西总是简单易用,貌似完全把使用者当白痴对待,汗~
 
1.在ASP.NET AJAX-Enabled Web Site中新建一个ConfirmButton.aspx文件。
2.拖入一个ScriptManager和一个UpdatePanel。
3.向UpdatePanel中拖入一个Button控件和一个ConfirmButtonExtender控件。
4.修改ConfirmButtonExtender控件的TargetControlID属性为Button的ID。
5.修改Button的ConfirmText属性,输入一段信息:尼克技术博客http://www.ineeke.com欢迎您光临!这段信息将在弹出的窗口中显示。
现在这个AJAX效果已经做好了,运行这个程序,单击一下Button就能看到效果了。不过这个效果用不着这么麻烦吧,微软是不是脑子秀逗了,完全可以直接用JavaScript弹的嘛!

AlwaysVisibleControlExtender控件

2008.10.19 / 标签: , / 分类: ASP.NET
Sofa

AlwaysVisibleControlExtender控件直译出来就是“始终显示”。个人感觉这个控件貌似有点多余,不知道究竟有多大用处。既便如此,我们还是得了解了解它。
我们把浏览器的窗口若分成3行3列的话,AlwaysVisibleControlExtender控件便可以让我们要显示的信息在这分出来的9个方框的任何一个中出现。下面来看看具体如何使用它。
首先创建一个ASP.NET AJAX-Enabled Web Site,打开默认创建好的Default.aspx文件并进入设计模式。
你将会看到一个ScriptManager控件在上面,千万可别把它删除哦,删了就不能使用AJAX了。
向页面中拖入一个UpdatePanel控件,再分别向UpdatePanel中拖入一个panel和一个AlwaysVisibleControlExtender控件。在pnael中我们可以写一些信息,例如:
尼克技术博客
学习笔记
,接下来选中AlwaysVisibleControlExtender控件并修改其属性TargetControlID为写有信息的那个panel。
接下来再向UpdatePanel中拖入一个DropDownList同时启用DropDownList的AutoPostBack属性,并为其增加如下几项值:

 
  1. <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
  2.                     <asp:ListItem Value="11">默认</asp:ListItem>
  3.                     <asp:ListItem Value="00">左上</asp:ListItem>
  4.                     <asp:ListItem Value="01">中上</asp:ListItem>
  5.                     <asp:ListItem Value="02">右上</asp:ListItem>
  6.                     <asp:ListItem Value="10">左中</asp:ListItem>
  7.                     <asp:ListItem Value="11">中中</asp:ListItem>
  8.                     <asp:ListItem Value="12">右中</asp:ListItem>
  9.                     <asp:ListItem Value="20">左下</asp:ListItem>
  10.                     <asp:ListItem Value="21">中下</asp:ListItem>
  11.                     <asp:ListItem Value="22">右下</asp:ListItem>
  12. </asp:DropDownList>

 

双击DropDownList的SelectedIndexChanged事件,并写入如下代码:

 
  1. switch (this.DropDownList1.SelectedValue[0])
  2.         {
  3.             case ’0′:
  4.                 avce.VerticalSide = VerticalSide.Top;
  5.                 break;
  6.             case ’1′:
  7.                 avce.VerticalSide = VerticalSide.Middle;
  8.                 break;
  9.             case ’2′:
  10.                 avce.VerticalSide = VerticalSide.Bottom;
  11.                 break;
  12.             default:
  13.    &n
    bsp;            avce.VerticalSide = VerticalSide.Middle;
  14.                 return;
  15.         }
  16.         switch (this.DropDownList1.SelectedValue[1])
  17.         {
  18.             case ’0′:
  19.                 avce.HorizontalSide = HorizontalSide.Left;
  20.                 break;
  21.             case ’1′:
  22.                 avce.HorizontalSide = HorizontalSide.Center;
  23.                 break;
  24.             case ’2′:
  25.                 avce.HorizontalSide = HorizontalSide.Right;
  26.                 break;
  27.             default:
  28.                 avce.HorizontalSide = HorizontalSide.Center;
  29.                 return;
  30.         }

 

现在你可以保存并运行这个AJAX了,在下拉框中选中你要它显示的位置,它就会根据你的指令走了。


如果你觉得你的信息框不好看,那么你可以在panel的属性中对其样式进行修改。
至于DropDownList1.SelectedValue[0]其意就是取出当前选中的值的索引为0的字符,例如Value="11"那么这里取出的便是“1”,之后对其进行判断,进而改变panel在网页中的位置。

无觅相关文章插件,快速提升流量