当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 大数量查询分页显示 微软的解决办法

ASP.NET
调用另外一个同名的重载函数漏掉括号出现的严重问题
DataGrid模板列应用:在DataGrid中用CheckBox控制TextBox的Enabled属性
使用存储过程的一个小例子
.net中xmlhttp下载文件的方法参考
简单的c#文本文件读写
我的C#学习过程 第一天 安装
在数据库中开始一个事务。
用ASP.NETt实现简单的文字水印
C/S系统中三层结构(Com/Com+)的测试成功实现
VB 二进制块读写类模块应用实例,包括一个文件拷贝和一个文件二进制比较的例子。
扫雷程序“布雷”代码(vb)
关于网络连接状态的编程
c#中ref和out参数使用时需要注意的问题
use Assembly to call a method
在VBA中调用AUTOCAD打印文件
在VS.NET的
昨天折腾了一晚上,哪位高手帮我看看!急!
Net是未来的趋势吗?
如何修改自定义Webpart 的标题(downmoon)
[收藏]ASP.Net生成静态HTML页 选择自 coofucoo 的 Blog

ASP.NET 中的 大数量查询分页显示 微软的解决办法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 129 ::
收藏到网摘: n/a

微软的解决办法
usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Drawing;
usingSystem.Windows.Forms;

publicclassPagingSample:Form
{
//Formcontrols.
ButtonprevBtn=newButton();
ButtonnextBtn=newButton();

staticDataGridmyGrid=newDataGrid();
staticLabelpageLbl=newLabel();

//Pagingvariables.
staticintpageSize=10;//Sizeofviewedpage.
staticinttotalPages=0;//Totalpages.
staticintcurrentPage=0;//Currentpage.
staticstringfirstVisibleCustomer="";//Firstcustomeronpagetodeterminelocationformoveprevious.
staticstringlastVisibleCustomer="";//Lastcustomeronpagetodeterminelocationformovenext.

//DataSettobindtoDataGrid.
staticDataTablecustTable;

//InitializeconnectiontodatabaseandDataAdapter.
staticSqlConnectionnwindConn=newSqlConnection("DataSource=localhost;IntegratedSecurity=SSPI;InitialCatalog=northwind");
staticSqlDataAdaptercustDA=newSqlDataAdapter("",nwindConn);
staticSqlCommandselCmd=custDA.SelectCommand;

publicstaticvoidGetData(stringdirection)
{
//CreateSQLstatementtoreturnapageofrecords.
selCmd.Parameters.Clear();

switch(direction)
{
case"Next":
selCmd.CommandText="SELECTTOP"+pageSize+"CustomerID,CompanyNameFROMCustomers"+
"WHERECustomerID>@CustomerIdORDERBYCustomerID";
selCmd.Parameters.Add("@CustomerId",SqlDbType.VarChar,5).Value=lastVisibleCustomer;
break;
case"Previous":
selCmd.CommandText="SELECTTOP"+pageSize+"CustomerID,CompanyNameFROMCustomers"+
"WHERECustomerID<@CustomerIdORDERBYCustomerIDDESC";
selCmd.Parameters.Add("@CustomerId",SqlDbType.VarChar,5).Value=firstVisibleCustomer;
break;
default:
selCmd.CommandText="SELECTTOP"+pageSize+"CustomerID,CompanyNameFROMCustomersORDERBYCustomerID";

//Determinetotalpages.
SqlCommandtotCMD=newSqlCommand("SELECTCount(*)FROMCustomers",nwindConn);
nwindConn.Open();
inttotalRecords=(int)totCMD.ExecuteScalar();
nwindConn.Close();
totalPages=(int)Math.Ceiling((double)totalRecords/pageSize);

break;
}

//Fillatemporarytablewithqueryresults.
DataTabletmpTable=newDataTable("Customers");
intrecordsAffected=custDA.Fill(tmpTable);

//Iftabledoesnotexist,createit.
if(custTable==null)
custTable=tmpTable.Clone();

//Refreshtableifatleastonerecordreturned.
if(recordsAffected>0)
{
switch(direction)
{
case"Next":
currentPage++;
break;
case"Previous":
currentPage--;
break;
default:
currentPage=1;
break;
}

pageLbl.Text="Page"+currentPage+"of"+totalPages;

//Clearrowsandaddnewresults.
custTable.Rows.Clear();

foreach(DataRowmyRowintmpTable.Rows)
custTable.ImportRow(myRow);

//Preservefirstandlastprimarykeyvalues.
DataRow[]ordRows=custTable.Select("","CustomerIDASC");
firstVisibleCustomer=ordRows[0][0].ToString();
lastVisibleCustomer=ordRows[custTable.Rows.Count-1][0].ToString();
}
}

publicPagingSample()
{
//Initializecontrolsandaddtoform.
this.ClientSize=newSize(360,274);
this.Text="NorthWindData";

myGrid.Location=newPoint(10,10);
myGrid.Size=newSize(340,220);
myGrid.AllowSorting=true;
myGrid.CaptionText="NorthWindCustomers";
myGrid.ReadOnly=true;
myGrid.AllowNavigation=false;
myGrid.PreferredColumnWidth=150;

prevBtn.Text="<<";
prevBtn.Size=newSize(48,24);
prevBtn.Location=newPoint(92,240);
prevBtn.Click+=newEventHandler(Prev_OnClick);

nextBtn.Text=">>";
nextBtn.Size=newSize(48,24);
nextBtn.Location=newPoint(160,240);

pageLbl.Text="NoRecordsReturned.";
pageLbl.Size=newSize(130,16);
pageLbl.Location=newPoint(218,244);

this.Controls.Add(myGrid);
this.Controls.Add(prevBtn);
this.Controls.Add(nextBtn);
this.Controls.Add(pageLbl);
nextBtn.Click+=newEventHandler(Next_OnClick);


//PopulateDataSetwithfirstpageofrecordsandbindtogrid.
GetData("Default");
DataViewcustDV=newDataView(custTable,"","CustomerID",DataViewRowState.CurrentRows);
myGrid.SetDataBinding(custDV,"");
}

publicstaticvoidPrev_OnClick(objectsender,EventArgsargs)
{
GetData("Previous");
}

publicstaticvoidNext_OnClick(objectsender,EventArgsargs)
{
GetData("Next");
}
}

publicclassSample
{
staticvoidMain()
{
Application.Run(newPagingSample());
}
}