您的位置:首页 > 其它

千万级数据分页之二---一个简单的自定义分页控件

2008-04-02 13:14 716 查看
[align=center]千万级数据分页详细设计[/align]
1.引言
1.1目的
为适应大数据量分页的需要,为以后千万级数据分页提供解决方法或者参考,节省开发时间,特制定本详细设计方案
1.2主要阅读对象
脚本设计人员
1.3参考资料
http://www.cnblogs.com/SGSoft/archive/2004/10/23/55800.html
2.详细设计
2.1分页存储过程
2.1.1简介
2.1.2分页存储过程代码
[align=left]以下代码是网上找的分页存储过程,我是在原存储过程的基础上加了一个@IsCount bit = 0, 主要是用来返回纪录总数,当为非0值时返回。下面注释部分是原作者的测试部分。我在本机sql server 2005上的测试是在10000011纪录中查询第100000页,每页10条纪录按升序和降序时间均为0.38秒,测试语法如下:exec GetRecordFromPage tbl_Briefness,I_BriefnessID,10,100000,其中在tbl_Briefness表I_BriefnessID字段上建立了索引。[/align]




/**//*


经测试,在14483461 条记录中查询第100000 页,每页10 条记录按升序和降序第一次时间均为0.47 秒,第二次时间均为0.43 秒,测试语法如下:


exec GetRecordFromPage news,newsid,10,100000


news 为表名, newsid 为关键字段, 使用时请先对newsid 建立索引。




函数名称: GetRecordFromPage


函数功能: 获取指定页的数据


参数说明: @tblName 包含数据的表名


@fldName 关键字段名


@PageSize 每页记录数


@PageIndex 要获取的页码


@OrderType 排序类型, 0 - 升序, 1 - 降序


@strWhere 查询条件(注意: 不要加where)


创建时间: 2004-07-04


修改时间: 2008-02-13


*/


ALTER PROCEDURE [dbo].[GetRecordFromPage]


@tblName varchar(255), -- 表名


@fldName varchar(255), -- 字段名


@PageSize int = 10, -- 页尺寸


@PageIndex int = 1, -- 页码


@OrderType bit = 0, -- 设置排序类型, 非0 值则降序


@IsCount bit = 0, -- 返回记录总数, 非0 值则返回


@strWhere varchar(2000) = '' -- 查询条件(注意: 不要加where)




AS




declare @strSQL varchar(6000) -- 主语句


declare @strTmp varchar(1000) -- 临时变量


declare @strOrder varchar(500) -- 排序类型




if @OrderType != 0


begin


set @strTmp = '<(select min'


set @strOrder = ' order by [' + @fldName + '] desc'


end


else


begin


set @strTmp = '>(select max'


set @strOrder = ' order by [' + @fldName +'] asc'


end




set @strSQL = 'select top ' + str(@PageSize) + ' * from ['


+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['


+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['


+ @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'


+ @strOrder




if @strWhere != ''


set @strSQL = 'select top ' + str(@PageSize) + ' * from ['


+ @tblName + '] where [' + @fldName + ']' + @strTmp + '(['


+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['


+ @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '


+ @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder




if @PageIndex = 1


begin


set @strTmp = ''


if @strWhere != ''


set @strTmp = ' where (' + @strWhere + ')'




set @strSQL = 'select top ' + str(@PageSize) + ' * from ['


+ @tblName + ']' + @strTmp + ' ' + @strOrder


end


if @IsCount != 0


set @strSQL = 'select count(' + @fldName + ') as Total from [' + @tblName + ']'


exec (@strSQL)



[align=left] [/align]
[align=left]2.2分页控件的实现[/align]
[align=left]2.2.1分页控件的详细代码[/align]


using System;


using System.Collections.Generic;


using System.Text;


using System.ComponentModel;


using System.Web;


using System.Web.UI;


using System.Web.UI.WebControls;




namespace CustomControls




...{


[ToolboxData("<{0}:AspNetPager runat='server' PageSize='25' FirstPageText='首页' PrePageText='上一页' NextPageText='下一页' EndPageText='末页' ButtonText='GO'></{0}:AspNetPager>")]


public class AspNetPager : WebControl, INamingContainer




...{




属性块#region 属性块


private object baseState = null;


private object buttonStyleState = null;


private object textBoxStyleState = null;


private object labelStyleState = null;


private object linkButtonStyleState = null;


private LinkButton _lnkbtnFrist;


private LinkButton _lnkbtnPre;


private LinkButton _lnkbtnNext;


private LinkButton _lnkbtnLast;


private Label _lblCurrentPage;


private Label _lblRecodeCount;


private Label _lblPageCount;


private Label _lblPageSize;


private TextBox _txtPageIndex;


private Button _btnChangePage;


private static readonly object EventPageChange = new object();


[Category("Pagination"), Description("每页显示的纪录数"),


DefaultValue("25")]


public virtual int PageSize




...{


get




...{


EnsureChildControls();


return _lblPageSize.Text.Trim() != "" ? int.Parse(_lblPageSize.Text.Trim()) : 25;


}


set




...{


EnsureChildControls();


_lblPageSize.Text = value.ToString();


}


}


[Category("Pagination"), Description("总纪录数"),


DefaultValue("0"), Bindable(true)]


public virtual int RecordCount




...{


get




...{


EnsureChildControls();


return _lblRecodeCount.Text.Trim() != "" ? int.Parse(_lblRecodeCount.Text.Trim()) : 0;


}


set




...{


EnsureChildControls();


if (value > 0)




...{


int recodeCount = value;


_lblPageCount.Text = (value % PageSize == 0 ? value / PageSize : value / PageSize + 1).ToString();//计算总页数


}


_lblRecodeCount.Text = value.ToString();


}


}


[Category("Pagination"), Description("当前页码"),


DefaultValue("1"), Bindable(true)]


public virtual int PageIndex




...{


get




...{


EnsureChildControls();


return _lblCurrentPage.Text.Trim() != "" ? int.Parse(_lblCurrentPage.Text.Trim()) : 1;


}


set




...{


EnsureChildControls();


_lblCurrentPage.Text = value.ToString();


}


}


[Category("Appearance"), Description("设置第一页的文本"),


DefaultValue("首页"), Bindable(true)]


public virtual string FirstPageText




...{


get




...{


EnsureChildControls();


return _lnkbtnFrist.Text.Trim() != "" ? _lnkbtnFrist.Text.Trim() : "首页";


}


set




...{


EnsureChildControls();


_lnkbtnFrist.Text = value;


}


}


[Category("Appearance"), Description("设置上一页的文本"),


DefaultValue("上一页"), Bindable(true)]


public virtual string PrePageText




...{


get




...{


EnsureChildControls();


return _lnkbtnPre.Text.Trim() != "" ? _lnkbtnPre.Text.Trim() : "上一页";


}


set




...{


EnsureChildControls();


_lnkbtnPre.Text = value;


}


}


[Category("Appearance"), Description("设置下一页的文本"),


DefaultValue("下一页"), Bindable(true)]


public virtual string NextPageText




...{


get




...{


EnsureChildControls();


return _lnkbtnNext.Text.Trim() != "" ? _lnkbtnNext.Text.Trim() : "下一页";


}


set




...{


EnsureChildControls();


_lnkbtnNext.Text = value;


}


}


[Category("Appearance"), Description("设置末页的文本"),


DefaultValue("末页"), Bindable(true)]


public virtual string EndPageText




...{


get




...{


EnsureChildControls();


return _lnkbtnLast.Text.Trim() != "" ? _lnkbtnLast.Text.Trim() : "末页";


}


set




...{


EnsureChildControls();


_lnkbtnLast.Text = value;


}


}


[Category("Appearance"), Description("设置跳转按钮的文本"),


DefaultValue(":"), Bindable(true)]


public virtual string ButtonText




...{


get




...{


EnsureChildControls();


return _btnChangePage.Text.Trim() != "" ? _btnChangePage.Text.Trim() : "GO";


}


set




...{


EnsureChildControls();


_btnChangePage.Text = value;


}


}


#endregion






分页事件相关#region 分页事件相关


public event EventHandler PageChanged




...{


add




...{


Events.AddHandler(EventPageChange, value);


}


remove




...{


Events.RemoveHandler(EventPageChange, value);


}




}


protected void OnPageChanged(EventArgs e)




...{


EventHandler handler = (EventHandler)Events[EventPageChange];


if (handler != null)




...{


handler(this, e);


}


}


#endregion






样式属性#region 样式属性


private Style _buttonStyle;


private Style _textBoxStyle;


private Style _linkButtonStyle;


[


Category("Styles"),


DefaultValue(null),


DesignerSerializationVisibility(


DesignerSerializationVisibility.Content),


PersistenceMode(PersistenceMode.InnerProperty),


Description(


"应用于按钮的样式")


]


public virtual Style ButtonStyle




...{


get




...{


if (_buttonStyle == null)




...{


_buttonStyle = new Style();


if (IsTrackingViewState)




...{


((IStateManager)_buttonStyle).TrackViewState();


}


}


return _buttonStyle;


}


}


[


Category("Styles"),


DefaultValue(null),


DesignerSerializationVisibility(


DesignerSerializationVisibility.Content),


PersistenceMode(PersistenceMode.InnerProperty),


Description(


"应用于链接按钮的样式")


]


public virtual Style LinkButtonStyle




...{


get




...{


if (_linkButtonStyle == null)




...{


_linkButtonStyle = new Style();


if (IsTrackingViewState)




...{


((IStateManager)_linkButtonStyle).TrackViewState();


}


}


return _linkButtonStyle;


}


}




[


Category("Styles"),


DefaultValue(null),


DesignerSerializationVisibility(


DesignerSerializationVisibility.Content),


PersistenceMode(PersistenceMode.InnerProperty),


Description(


"应用于文本框的样式")


]


public virtual Style TextBoxStyle




...{


get




...{


if (_textBoxStyle == null)




...{


_textBoxStyle = new Style();


if (IsTrackingViewState)




...{


((IStateManager)_textBoxStyle).TrackViewState();


}


}


return _textBoxStyle;


}


}


private Style _labelStyle;


[


Category("Styles"),


DefaultValue(null),


DesignerSerializationVisibility(


DesignerSerializationVisibility.Content),


PersistenceMode(PersistenceMode.InnerProperty),


Description(


"应用于标签的样式")


]


public virtual Style LabelStyle




...{


get




...{


if (_labelStyle == null)




...{


_labelStyle = new Style();


if (IsTrackingViewState)




...{


((IStateManager)_labelStyle).TrackViewState();


}


}


return _labelStyle;


}


}


#endregion






自定义视图状态#region 自定义视图状态


protected override void LoadViewState(object savedState)




...{


if (savedState == null)




...{


base.LoadViewState(null);


return;


}


else




...{


Triplet t = savedState as Triplet;




if (t != null)




...{


base.LoadViewState(baseState);




if ((t.Second) != null)




...{


((IStateManager)ButtonStyle).LoadViewState(buttonStyleState);


}




if ((t.Third) != null)




...{


((IStateManager)TextBoxStyle).LoadViewState(textBoxStyleState);


}


if (labelStyleState != null)




...{


((IStateManager)(_labelStyle)).LoadViewState(labelStyleState);


}


if (linkButtonStyleState != null)




...{


((IStateManager)(_linkButtonStyle)).LoadViewState(linkButtonStyleState);


}


}


else




...{


throw new ArgumentException("Invalid view state .");


}


}


}




protected override object SaveViewState()




...{


baseState = base.SaveViewState();


buttonStyleState = null;


textBoxStyleState = null;


labelStyleState = null;


linkButtonStyleState = null;


if (_buttonStyle != null)




...{


buttonStyleState =


((IStateManager)_buttonStyle).SaveViewState();


}




if (_textBoxStyle != null)




...{


textBoxStyleState =


((IStateManager)_textBoxStyle).SaveViewState();


}


if (_labelStyle != null)




...{


labelStyleState = ((IStateManager)_labelStyle).SaveViewState();


}


if (_linkButtonStyle != null)




...{


linkButtonStyleState = ((IStateManager)_linkButtonStyle).SaveViewState();


}


return new Triplet(baseState,


buttonStyleState, textBoxStyleState);




}




protected override void TrackViewState()




...{


base.TrackViewState();


if (_buttonStyle != null)




...{


((IStateManager)_buttonStyle).TrackViewState();


}


if (_textBoxStyle != null)




...{


((IStateManager)_textBoxStyle).TrackViewState();


}


if (_labelStyle != null)




...{


((IStateManager)_labelStyle).TrackViewState();


}


if (_linkButtonStyle != null)




...{


((IStateManager)_linkButtonStyle).TrackViewState();


}


}


#endregion






生成控件#region 生成控件


protected override void CreateChildControls()




...{


this.Controls.Clear();


_btnChangePage = new Button();


_btnChangePage.ID = "btnChangePage";


_btnChangePage.Click += new EventHandler(BtnChangePage_Click);


_lblCurrentPage = new Label();


_lblCurrentPage.ID = "lblCurrentPage";


_lblPageCount = new Label();


_lblPageCount.ID = "lblPageCount";


_lblRecodeCount = new Label();


_lblRecodeCount.ID = "lblRecodeCount";


_lnkbtnFrist = new LinkButton();


_lnkbtnFrist.ID = "lnkbtnFrist";


_lnkbtnFrist.Click += new EventHandler(lnkbtnFrist_Click);


_lnkbtnLast = new LinkButton();


_lnkbtnLast.ID = "lnkbtnLast";


_lnkbtnLast.Click += new EventHandler(lnkbtnLast_Click);


_lnkbtnNext = new LinkButton();


_lnkbtnNext.ID = "lnkbtnNext";


_lnkbtnNext.Click += new EventHandler(lnkbtnNext_Click);


_lnkbtnPre = new LinkButton();


_lnkbtnPre.ID = "lnkbtnPre";


_lnkbtnPre.Click += new EventHandler(lnkbtnPre_Click);


_txtPageIndex = new TextBox();


_txtPageIndex.ID = "txtPageIndex";


_lblPageSize = new Label();


_lblPageSize.ID = "lblPageSize";


this.Controls.Add(_btnChangePage);


this.Controls.Add(_lblCurrentPage);


this.Controls.Add(_lblPageCount);


this.Controls.Add(_lblRecodeCount);


this.Controls.Add(_lnkbtnFrist);


this.Controls.Add(_lnkbtnLast);


this.Controls.Add(_lnkbtnNext);


this.Controls.Add(_lnkbtnPre);


this.Controls.Add(_txtPageIndex);


base.CreateChildControls();


}


#endregion






按钮点击事件#region 按钮点击事件




翻页相关的事件#region 翻页相关的事件




/**//// <summary>


/// 处理翻页事件


/// </summary>


/// <param name="sender"></param>


/// <param name="e"></param>


protected void lnkbtnFrist_Click(object sender, EventArgs e) //第一页




...{


_lblCurrentPage.Text = "1";


OnPageChanged(EventArgs.Empty);


}


protected void lnkbtnPre_Click(object sender, EventArgs e) //上一页




...{


int pageIndex = int.Parse(_lblCurrentPage.Text);


if (pageIndex > 0)




...{


pageIndex--;


_lblCurrentPage.Text = pageIndex.ToString();


OnPageChanged(EventArgs.Empty);


}


}


protected void lnkbtnNext_Click(object sender, EventArgs e)//下一页




...{


int pageIndex = int.Parse(_lblCurrentPage.Text);


int pageCount = int.Parse(_lblPageCount.Text);


if (pageIndex < pageCount)




...{


pageIndex++;


_lblCurrentPage.Text = pageIndex.ToString();


}


OnPageChanged(EventArgs.Empty);


}


protected void lnkbtnLast_Click(object sender, EventArgs e)//末页




...{


_lblCurrentPage.Text = _lblPageCount.Text;


OnPageChanged(EventArgs.Empty);


}


#endregion


protected void BtnChangePage_Click(object sender, EventArgs e)//跳转到指定页




...{


int pageIndex=0;


try




...{


pageIndex = int.Parse(_txtPageIndex.Text);


}


catch




...{


System.Web.HttpContext.Current.Response.Write("<Script>alert('请输入正确的页数!');</script>");


return;


}


int pageCount = int.Parse(_lblPageCount.Text);


if (pageIndex == 0)//如果为0,则提示错误




...{


System.Web.HttpContext.Current.Response.Write("<Script>alert('请输入正确的页数!');</script>");


return;


}


if (pageIndex > pageCount)//如果大于总页数则提示错误




...{


System.Web.HttpContext.Current.Response.Write("<Script>alert('请输入正确的页数!');</script>");


return;


}


_lblCurrentPage.Text = pageIndex.ToString();


OnPageChanged(EventArgs.Empty);


}


#endregion






重写TagKey#region 重写TagKey


protected override HtmlTextWriterTag TagKey




...{


get




...{


return HtmlTextWriterTag.Table;


}


}


#endregion






绘制控件#region 绘制控件


protected override void RenderContents(HtmlTextWriter writer)




...{


if (ButtonStyle != null)




...{


_btnChangePage.ApplyStyle(ButtonStyle);


}


if (TextBoxStyle != null)




...{


_txtPageIndex.ApplyStyle(TextBoxStyle);


}


if (LabelStyle != null)




...{


_lblCurrentPage.ApplyStyle(LabelStyle);


_lblPageCount.ApplyStyle(LabelStyle);


_lblRecodeCount.ApplyStyle(LabelStyle);


_lblPageSize.ApplyStyle(LabelStyle);


}


AddAttributesToRender(writer);


writer.RenderBeginTag(HtmlTextWriterTag.Tr);


writer.AddAttribute(HtmlTextWriterAttribute.Align, "right");


writer.RenderBeginTag(HtmlTextWriterTag.Td);


writer.Write("当前第");


if (_lblCurrentPage != null)


_lblCurrentPage.RenderControl(writer);


writer.Write("页,每页");


if (_lblPageSize != null)




...{


_lblPageSize.RenderControl(writer);


}


writer.Write("条纪录,总共");


if (_lblRecodeCount != null)


_lblRecodeCount.RenderControl(writer);


writer.Write("条纪录,共");


if (_lblPageCount != null)


_lblPageCount.RenderControl(writer);


writer.Write("页  [  ");


if (_lnkbtnFrist != null)




...{


if (PageIndex == 1) //如果是第一页,则第一页灰显,作用是避免不必要的点击造成没必要的数据传输




...{


_lnkbtnFrist.Enabled = false;


}


else




...{


_lnkbtnFrist.Enabled = true;


}


_lnkbtnFrist.RenderControl(writer);


}


writer.Write(" ");


if (_lnkbtnPre != null)




...{


if (PageIndex > 1) //如果当前页大于1,则上一页显示,否则灰显




...{


_lnkbtnPre.Enabled = true;


}


else




...{


_lnkbtnPre.Enabled = false;


}


_lnkbtnPre.RenderControl(writer);


}


writer.Write(" ");


if (_lnkbtnNext != null)




...{


if (_lblPageCount == null)




...{


_lnkbtnNext.Enabled = false;


}


else




...{


int pageCount = int.Parse(_lblPageCount.Text); //获取总页数


if (PageIndex < pageCount)//如果当前页小于总页数,则下一页显示,否则灰显




...{


_lnkbtnNext.Enabled = true;


}


else




...{


_lnkbtnNext.Enabled = false;


}


}


_lnkbtnNext.RenderControl(writer);


}


writer.Write(" ");


if (_lnkbtnLast != null)




...{


if (_lblPageCount == null)




...{


_lnkbtnLast.Enabled = false;


}


else




...{


int pageCount = int.Parse(_lblPageCount.Text); //获取总页数


if (PageIndex == pageCount)//如果当前页为最后一页,则末页灰显




...{


_lnkbtnLast.Enabled = false;


}


else




...{


_lnkbtnLast.Enabled = true;


}


}


_lnkbtnLast.RenderControl(writer);


}


writer.Write("  ]跳转到第");


if (_txtPageIndex != null)


_txtPageIndex.RenderControl(writer);


writer.Write("页");


if (_btnChangePage != null)


_btnChangePage.RenderControl(writer);


writer.RenderEndTag();


writer.RenderEndTag();


//base.RenderContents(writer);


}


#endregion


}


}



2.3千万级数据分页实现

2.3.1简介

这次分页我是用Gridview来实现的,测试时间没算,但基本上从10000011纪录中一次查询25条纪录,在10万页以内,时间花费 在1秒以内。使用其他控件比如DataGrid,DataList或者DataReapter应该花费的时间更短。

2.3.2适用对象

服务器端控件Gridview,DataGrid,DataList,DataReapter等数据绑定控件

2.3.3分页实现

分页效果图如下:



前台代码如下:
后台代码如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo.aspx.cs" Inherits="Demo" %>




<%@ Register Assembly="CustomControls" Namespace="CustomControls" TagPrefix="cc2" %>




<%@ Register Assembly="MyLabel" Namespace="MyLabel" TagPrefix="cc1" %>










<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">




<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">


<title>无标题页</title>


<link type="text/css" rel="stylesheet" href="css/comm.css" />


</head>


<body>


<form id="form1" runat="server">


<div>


  


<asp:GridView ID="GridView1" runat="server" AllowPaging="false" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" PagerSettings-Visible="false"


Width="50%" height="35" OnRowCommand="GridView1_RowCommand" DataKeyNames="I_BriefnessID">


<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />


<RowStyle BackColor="#EFF3FB" />


<EditRowStyle BackColor="#2461BF" />


<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />


<PagerStyle ForeColor="White" VerticalAlign="Top" BackColor="Transparent" />


<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />


<AlternatingRowStyle BackColor="White" />


<Columns>


<asp:TemplateField HeaderText="序号">


<ItemTemplate>


<%# Container.DataItemIndex+1 %>


</ItemTemplate>


</asp:TemplateField>


<asp:BoundField DataField="I_BriefnessID" HeaderText="ID" />


<asp:BoundField DataField="I_KMID" HeaderText="科目" />


<asp:BoundField DataField="C_Recno" HeaderText="试题号" />


<asp:BoundField DataField="M_Title" HeaderText="题面" />


<asp:BoundField DataField="C_Answer" HeaderText="答案" />


<asp:TemplateField HeaderText="删除">


<ItemTemplate>


<asp:LinkButton ID="LinkButton1" OnClientClick="return confirm('确定要删除?');" runat="server"


CausesValidation="False" CommandName="DeleteData" CommandArgument='<%#DataBinder.Eval(Container.DataItem,"I_BriefnessID").ToString()%>' Text="删除" ></asp:LinkButton>


</ItemTemplate>


</asp:TemplateField>


</Columns>


</asp:GridView>


</div>


<div>


<cc2:AspNetPager ID="AspNetPager1" runat="server" ButtonText="GO" EndPageText="末页"


FirstPageText="首页" NextPageText="下一页" PageSize="15" PrePageText="上一页" OnPageChanged="Page_Changed" Width="50%">


<ButtonStyle CssClass="btn1_mouseout" Width="30px" />


<TextBoxStyle Width="30px" CssClass="blue_rounded"/>


<LabelStyle ForeColor="red" Font-Bold="true" />


</cc2:AspNetPager>


  


</div>


</form>


</body>


</html>




using System;


using System.Data;


using System.Configuration;


using System.Collections;


using System.Web;


using System.Web.Security;


using System.Web.UI;


using System.Web.UI.WebControls;


using System.Web.UI.WebControls.WebParts;


using System.Web.UI.HtmlControls;




public partial class Demo : System.Web.UI.Page




...{


protected void Page_Load(object sender, EventArgs e)




...{


if (!Page.IsPostBack)




...{


TestDataCount();


BindPaperDefineProgramme(1);


}




}






绑定试卷定义方案列表#region 绑定试卷定义方案列表




/**//// <summary>


/// 统计该表的所有纪录


/// </summary>


private void TestDataCount()




...{


DataTable dt = null;


try




...{


//public static DataTable GetTestData(string tableName, int pageSize, int pageIndex,string columnName,bool isCount)


//第一个参数为要查询的表,第二个参数为每页的纪录数,第三个为页码,这里初始化为第1页,第四个参数为表的字段


//,第五个参数为是否返回纪录总数,这里为true表示返回纪录总数


dt = ExecProc.GetTestData("tbl_Briefness", AspNetPager1.PageSize, 1, "I_BriefnessID", true);


}


catch (Exception ex)




...{


Response.Write(ex.Message);


return;


}


if (dt.Rows.Count != 0)




...{


AspNetPager1.RecordCount = int.Parse(dt.Rows[0]["Total"].ToString());


AspNetPager1.PageIndex = 1;//初始化当前页为第一页


}




}


#endregion




protected void Page_Changed(object sender, EventArgs e)




...{


BindPaperDefineProgramme(AspNetPager1.PageIndex);


}






删除纪录#region 删除纪录




/**//// <summary>


/// 删除纪录


/// </summary>


/// <param name="sender"></param>


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)




...{




if (e.CommandName == "Delete")




...{


string pagerID = GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString();


int flag = 0;


try




...{


flag = ExecProc.DeleteData(int.Parse(pagerID));


}


catch (Exception ex)




...{


}


if (flag != 0)




...{


Response.Write("<script>alert('删除成功!');</script>");


TestDataCount();


BindPaperDefineProgramme(1);


}


else




...{


Response.Write("<script>alert('删除失败!');</script>");


BindPaperDefineProgramme(AspNetPager1.PageIndex);


}


}


}


#endregion






绑定试卷定义方案列表#region 绑定试卷定义方案列表




/**//// <summary>


/// 根据当前页码查询需要的数据


/// </summary>


/// <param name="pageIndex">页码</param>


private void BindPaperDefineProgramme(int pageIndex)




...{


DataTable dt = null;


try




...{


dt = ExecProc.GetTestData("tbl_Briefness", AspNetPager1.PageSize, pageIndex, "I_BriefnessID", false); //根据页码查询需要的纪录


}


catch (Exception ex)




...{


Response.Write(ex.Message);


return;


}


if (dt.Rows.Count == 0)




...{


GridView1.Visible = false;


}


else




...{


GridView1.Visible = true;


GridView1.DataSource = dt;


GridView1.DataBind();


}




}


#endregion


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: