Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 在Datagrid里自定义翻页
【标  题】:在Datagrid里自定义翻页
【关键字】:Datagrid
【来  源】:http://chater.cnblogs.com/archive/2006/01/19/320189.html

在Datagrid里自定义翻页

Your Ad Here

第一次发技术帖,太懒了,真没办法。:(
刚刚换了一家公司,把手中用了两年的VB.net换成了C#,不过好在底层相通,一两天也就上手了。公司让我做的页面里,VS.Net自带的web页面翻页功能不能满足要求,于是自己动手,改写了一下,一则备忘,二则如果有朋友有类似的需求,可以聊以参考,见笑了。:)
这是翻页页面图片:


前端的HTML代码:
<%@ Page language="c#" Codebehind="Test3.aspx.cs" AutoEventWireup="false"

Inherits="UPloadMain.Test.Test3" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
  <HEAD>
  <title>Test3</title>
  <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
  <meta content="C#" name="CODE_LANGUAGE">
  <meta content="JavaScript" name="vs_defaultClientScript">
  <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
  </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
    <asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 208px; POSITION: absolute; TOP: 88px"
     runat="server" AllowPaging="True" AutoGenerateColumns="False" Width="480px">
<Columns>
<asp:BoundColumn DataField="UpID" HeaderText="UpID"></asp:BoundColumn>
<asp:BoundColumn DataField="UserID" HeaderText="UserID"></asp:BoundColumn>
<asp:BoundColumn DataField="FileType" HeaderText="FileType"></asp:BoundColumn>
<asp:BoundColumn DataField="FileName" HeaderText="FileName"></asp:BoundColumn>
</Columns>

<PagerStyle NextPageText="" PrevPageText="" HorizontalAlign="Center">
</PagerStyle>
    </asp:datagrid><asp:panel id="Panel1" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP:

368px" runat="server"
     Width="704px" Height="40px"></asp:panel></form>
 </body>
</HTML>

后台的代码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace UPloadMain.Test
{
 /// <summary>
 /// Test3 的摘要说明。
 /// </summary>
 public class Test3 : System.Web.UI.Page
 {
  protected System.Web.UI.WebControls.Panel Panel1;
  protected System.Web.UI.WebControls.DataGrid DataGrid1;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if (!Page.IsPostBack)
   {
    binddata();
    ViewState["PageStage"]=0;
   }
   loadlinkbutton();
           
  }

 

  private void binddata()
  {
   string Sqlstr="Select * from [UploadInfo_Test]";
   DataTable myTable=new DataTable();

 .....从数据库中得到DataTable

   DataGrid1.DataSource=myTable;
   DataGrid1.DataBind();
  }

  private void loadlinkbutton()
  {
//   int Index=0;
   Panel1.Controls.Clear();
   int myStage=Convert.ToInt16(ViewState["PageStage"].ToString());
   if (myStage>0)
   {
    LinkButton PreButton=new LinkButton();
    PreButton.ID="lib_Pre";
    PreButton.Text="[前十页]";
    PreButton.Click+=new EventHandler(linkButton_Pre_Click);
    Panel1.Controls.AddAt(0,PreButton);
    Label myLabel=new Label();
//    myLabel.ID="label_"+Panel1.Controls.Count.ToString();
    myLabel.Text="&nbsp;&nbsp;";
    Panel1.Controls.AddAt(Panel1.Controls.Count,myLabel);
   }

 
   for (int i=1;i<=10;i++)
   {
    if (myStage*10+i<=DataGrid1.PageCount)
    {
     LinkButton myButton=new LinkButton();
     myButton.ID="lib_"+i;
     int CurrentPageText=myStage*10+i;
     myButton.Text="["+CurrentPageText.ToString()+"]";
     myButton.Click+=new EventHandler(linkButton_Click);
     Panel1.Controls.AddAt(Panel1.Controls.Count,myButton);
     Label myLabel=new Label();
//     myLabel.ID="label_"+Panel1.Controls.Count.ToString();
     myLabel.Text="&nbsp;";
     Panel1.Controls.AddAt(Panel1.Controls.Count,myLabel);
    }
   }

   if (myStage*10+10<DataGrid1.PageCount)
   {
    Label myLabel=new Label();
    myLabel.Text="&nbsp;";
    Panel1.Controls.AddAt(Panel1.Controls.Count,myLabel);
    LinkButton BackButton=new LinkButton();
    BackButton.ID="lib_Back";
    BackButton.Text="[后十页]";
    BackButton.Click+=new EventHandler(linkButton_Back_Click);
    Panel1.Controls.AddAt(Panel1.Controls.Count,BackButton);

   }

  }

  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
 
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void linkButton_Click(object sender, System.EventArgs e)
  {
   LinkButton ClickButton=new LinkButton();
   ClickButton=(LinkButton)sender;
   string[] ButtonName=ClickButton.ID.ToString().Split('_');
   int CurrPage=Convert.ToInt16(ButtonName[1].ToString());
   int CurrStage=Convert.ToInt16(ViewState["PageStage"].ToString());
   clearbold();
   ClickButton.Font.Bold=true;
//   if (CurrPage==10)
//   {
//    ViewState["PageStage"]=CurrStage+1;
//    loadlinkbutton();
//   }
   DataGrid1.CurrentPageIndex=CurrStage*10+CurrPage-1;
   binddata();

  }

  private void linkButton_Pre_Click(object sender, System.EventArgs e)
  {
            int CurrStage=Convert.ToInt16(ViewState["PageStage"].ToString());
   ViewState["PageStage"]=CurrStage-1;
   loadlinkbutton();
   DataGrid1.CurrentPageIndex=(CurrStage-1)*10;
   binddata();

  }

  private void linkButton_Back_Click(object sender, System.EventArgs e)
  {
   int CurrStage=Convert.ToInt16(ViewState["PageStage"].ToString());
   ViewState["PageStage"]=CurrStage+1;
   loadlinkbutton();
   DataGrid1.CurrentPageIndex=(CurrStage+1)*10;
   binddata();

  }

  private void clearbold()
  {
   for (int i=0;i<=Panel1.Controls.Count-1;i++)
   {
    if (Panel1.Controls[i].GetType().Name=="LinkButton")
    {
                    LinkButton mybutton=new LinkButton();
     mybutton=(LinkButton)Panel1.Controls[i];
     mybutton.Font.Bold=false;
    }
   }
  }
 }


}


 

发布一个操作oracle的c#类,不足的地方请指正:【上一篇】
收发邮件Rcp程序笔记no.1:【下一篇】
【相关文章】
  • 在Datagrid里自定义翻页 [原创]
  • [DataGrid技巧]将RadioButton加入到DataGrid模板列后单选简单实现
  • 使用GDI+在VS2005下开发基于DataGridView的财务显示单元格控件
  • 欧洲数据网格DataGrid介绍
  • 继续发布VS2005下DataGridView 的多种样式列控件
  • RadioButton加入DataGrid模板列引起的问题。
  • DataGrid单元格移动变色,点击变色,双击取消颜色,排序.
  • 继续发布VS2005下开发ComboBoxDataGridView (下拉列表弹出DataGridView)
  • 如何同时选择DataGrid的多行
  • 数据的持久层一些个人想法 + DataGride的嵌套CheckBoxList
  • 【随机文章】
  • Windows下精确获取程序运行时间
  • 精妙SQL语句学习
  • vi 编辑器命令总汇
  • 在cygwin下安装skyeye成功笔记
  • C++ Builder 在控件中加入图形
  • Photoshop Action 动作集总揽
  • 美超级黑客Kevin Mitnick网站被骇 首页遭涂鸦留言到此一游
  • 如何改变按钮图片
  • mail server rc.conf
  • .NET之ASP Web Application快速入门(5)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.