All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET2.0站点登录、导航与权限管理_[Asp.Net教程]
实用技巧,利用Apache实现禁止图片盗链_php资料_编程技术
解决SQL Server连接中最为常见的错误_[SQL Server教程]
实例详细讲解PHP连接调用数据库的方法_php资料_编程技术
Httpd,2.2.0虚拟主机目录权限设置问题_php资料_编程技术
ASP.NET中根据XML动态创建使用WEB组件_[Asp.Net教程]
如何在ASP.Net中实现RSA加密_.net资料_编程技术
SQL,Server,2005兼容性问答_[SQL,Server教程]
XHTML代码的基本应用_[Html教程]
教你轻松给流程增加权限控制程序_.net资料_编程技术
Reading number is top 10 pictures
全球清廉国家排行
日本小萝莉2
China's family planning commission forced abortions 270 million newborns for 30 years
美女浴室写真2
Embarrassing things comic collection1
这才是真正的人体艺术1
The real super beauty5
30 beautiful school beauty3
2012 national geographic daily picture6
Plump, too plump!1
Download software ranking
C++编程教程第三版
美女游泳记
卡丁车单机版
Proficient in JavaScript
WebService在.NET中的实战应用教学视频 → 第1集
电脑知识及技巧大合集
Tram sex maniac 2 (H) rar bag2
The Bermuda triangle1
C#编程思想
Rio big adventure
aaa published in(发表于) 2013/12/15 8:52:54 Edit(编辑)
客户端回调实现gridView无刷新分页_.net资料_编程技术

客户端回调实现gridView无刷新分页_.net资料_编程技术

客户端回调实现gridView无刷新分页_.net资料_编程技术-你的首页-uuhomepage.com







由于客户对速度和性能上的要求越来越变态,而数据量一天天的庞大,因此本人产生了数据的查询和分页完全由客户端回调来实现。想法看上去复杂,实现起来也不难。废话不多说,看程序吧。




一、存储过程




包头:




create or replace package H_QUERYPACK is




-- Author : Evorul
-- Created : 2007-3-29
-- Purpose : 查询机构表

-- Public type declarations
type MYCURSOR is REF CURSOR;
PROCEDURE QUERYLOG (RET_CURSOR OUT MYCURSOR,ERRORCODE OUT INT,p_logID int,p_StartTime Date,p_EndTime Date,p_Operator varchar2 ,p_OrderField varchar2 ,
p_Desc int,p_PageSize Int,p_PageIndex Int,p_RecordCount Out Int);




end H_QUERYPACK;




包体:




create or replace package body H_QUERYPACK Is
-- Author : Evorul
-- Created : 2007-3-29
-- Purpose : 查询

-- 查询公司,分页用
PROCEDURE QUERYLOG (RET_CURSOR OUT MYCURSOR,ERRORCODE OUT INT,p_logID int,p_StartTime Date,p_EndTime Date,p_Operator varchar2 ,p_OrderField varchar2 ,
p_Desc int,p_PageSize Int,p_PageIndex Int,p_RecordCount Out Int)
AS
v_sql varchar2(3000);
v_sqlcount varchar2(3000);
v_orderfield varchar2(100);
v_order VARCHAR2(5); --顺序
v_count int;
v_heiRownum int;
v_lowRownum int;
BEGIN
ERRORCODE:=0;




v_sql:='select * from LOG Where 1=1 ';




if(p_logID <> 0)then
v_sql := v_sql || ' and id = ' || TO_CHAR(p_logID);
end if;




IF p_Operator Is Not Null Then then
v_sql := v_sql || 'And operator LIKE ''%' || RTRIM(LTRIM(p_Operator))||'%''';
end if;




v_sql := v_sql ||' and (TO_CHAR(time,''YYYYMMDD'') between ''' || to_char(p_StartTime, 'YYYYMMDD') ||''' and ''' || to_char(p_EndTime, 'YYYYMMDD') ||''')';






----取记录总数
v_sqlcount := 'select count(*) from (' || v_sql || ')';
execute immediate v_sqlcount into v_count;
p_RecordCount := v_count;




--排序字段
IF p_OrderField IS NOT NULL THEN
v_orderfield:=p_OrderField;
Else
v_orderfield:='ID';
END IF;
--是否降序
IF p_Desc <>0 THEN
v_order:=' ASC';
Else
v_order:=' DESC';
END IF;

v_sql:=v_sql || 'ORDER BY '|| v_orderfield || v_order;
----执行分页查询
v_heiRownum := p_PageIndex * p_PageSize;
v_lowRownum := v_heiRownum - p_PageSize + 1;




v_sql := 'SELECT * FROM (
SELECT A.*, rownum rn FROM ('|| v_sql ||') A WHERE rownum <= '|| to_char(v_heiRownum) || ') B WHERE rn >= ' || to_char(v_lowRownum) ;





OPEN RET_CURSOR FOR v_sql;




EXCEPTION
WHEN NO_DATA_FOUND THEN
ERRORCODE:=9999;
WHEN OTHERS THEN
ERRORCODE:=9999;
END QUERYLOG;

END H_QUERYPACK;
二、程序




DataAccess.cs







using System;
using System.Data;
using System.Data.OracleClient;
using System.Collections;
using System.Collections.Specialized;




/**////


///数据层 author: EvoRul date:2007-03-29
///

public class DataAccess
...{




/**////


/// 返回数据库连接字符串
///

public static String DatabaseConnectionString
...{
get
...{
NameValueCollection configSettings = (NameValueCollection)System.Configuration.ConfigurationManager.GetSection("appSettings");
return configSettings["connectionString"];
}
}




/**////


/// 返回每一页显示的纪录数
///

public static int RowsPerPage
...{
get
...{
NameValueCollection configSettings = (NameValueCollection)System.Configuration.ConfigurationManager.GetSection("appSettings");
return Convert.ToInt32(configSettings["rowsPerPage"]);
}
}




/**////


/// 获取特定日志集合
///

/// 日志类型
/// 操作人
/// 排序字段
/// 是否升序 0-降序,1-升
/// 页码
/// 页行数
/// 符合条件的总记录数
///
public static ArrayList QueryLog(string strOperator,DateTime dtStartTime,DateTime dtEndTime, string strOrderField,
int intASC, int PageIndex, int rowCount, out int recordSum)
...{
// 返回集合
ArrayList myArrayList = new ArrayList();




// 创建连接
OracleConnection myConnection = new OracleConnection(DatabaseConnectionString);




try
...{
// 打开连接
myConnection.Open();
}
catch (Exception ex)
...{
throw (ex);
}




try
...{
// 创建存储过程
OracleCommand myCommand = new OracleCommand("H_QUERYPACK.QUERYLOG", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
OracleDataReader dr;




// ============================== 参数定义 ==============================




// 返回值
myCommand.Parameters.Add("RET_CURSOR", OracleType.Cursor);
myCommand.Parameters["RET_CURSOR"].Direction = ParameterDirection.Output;
OracleParameter ret = myCommand.Parameters.Add("ERRORCODE", OracleType.Int32);
ret.Direction = ParameterDirection.Output;




OracleParameter retCountSum = myCommand.Parameters.AddWithValue("p_RecordCount", OracleType.Int32);
retCountSum.Direction = ParameterDirection.Output;




// 编号
myCommand.Parameters.AddWithValue("p_logID", OracleType.Int32).Value = 0;




// 用户编号
myCommand.Parameters.AddWithValue("p_Operator", OracleType.VarChar).Value = strOperator;




// 时间下限
myCommand.Parameters.AddWithValue("p_StartTime", OracleType.DateTime).Value = dtStartTime;




// 时间上限
myCommand.Parameters.AddWithValue("p_EndTime", OracleType.DateTime).Value =dtEndTime;




// 排序字段
myCommand.Parameters.AddWithValue("p_OrderField", OracleType.VarChar).Value = strOrderField;




// 怎么排序
myCommand.Parameters.AddWithValue("p_Desc", OracleType.Int32).Value = intASC;




// 每页行数
myCommand.Parameters.AddWithValue("p_PageSize", OracleType.Int32).Value = rowCount;




//页码
myCommand.Parameters.AddWithValue("p_PageIndex", OracleType.Int32).Value = PageIndex;







// ============================ 参数定义完毕 ============================




// 执行存储过程
dr = myCommand.ExecuteReader();




// 执行未成功
if (Convert.ToInt32(ret.Value) != 0)
throw new Exception("执行存储过程出错!");




// 总记录数
recordSum = Convert.ToInt32(retCountSum.Value);





while (dr.Read())
...{
// 创建新日志
Log log = new Log();




//操作业务类型
if (dr["operationtype"] != DBNull.Value)
...{
log.OperationType = Convert.ToString(dr["operationtype"]);
}
// 时间
if (dr["time"] != DBNull.Value)
log.Time = Convert.ToDateTime(dr["time"]);




// 用户
if (dr["operator"] != DBNull.Value)
...{
log.Operator = Convert.ToString(dr["operator"]);
}




// 信息
if (dr["info"] != DBNull.Value)
log.Info = Convert.ToString(dr["info"]);




// 加入返回集合
myArrayList.Add(log);
}




dr.Close();
return myArrayList;
}
catch (Exception ex)
...{
throw (ex);
}
finally
...{
myConnection.Close();
}
}
}







DataLogic.cs







using System;
using System.Data;
using System.Configuration;
using System.Collections;




/**////


/// 业务逻辑层 author: EvoRul date:2007-03-29
///

public class DataLogic
...{
public DataLogic()
...{
}




public static int recordSum = 0;





/**////


/// 查询日志
///

/// 操作人
/// 时间范围下限
/// 时间上限
/// 页码
///
public static IEnumerable GetLogData(string strOperator,DateTime dtStarTime,DateTime dtEndTime, string Pageid)
...{
return Log.GetList(strOperator,dtStarTime,dtEndTime,"time",1, Convert.ToInt32(Pageid),DataAccess.RowsPerPage,out recordSum);
}
}







Log.cs







using System;
using System.Data;
using System.Collections;




/**////


/// 日志类
///

public class Log
...{
// ============================== 成员 ==============================




protected string operationType;
/**////


/// 时间
///

protected DateTime time = new DateTime();




/**////


/// 用户
///

protected string m_operator;




/**////


/// 信息
///

protected string info = "";





// ============================== 属性 ==============================




public string OperationType
...{
get ...{ return operationType; }
set ...{ operationType = value; }
}
/**////


/// 时间
///

public DateTime Time
...{
get ...{ return time; }
set ...{ time = value; }
}





/**////


/// 用户
///

public string Operator
...{
get ...{ return m_operator; }
set ...{ m_operator = value; }
}




/**////


/// 信息
///

public string Info
...{
get ...{ return info; }
set ...{ info = value; }
}




// ============================== 方法 ==============================




/**////


/// 创建空日志实例
///

public Log()
...{
}




/**////


/// 新增日志
///

public void Add()
...{
try
...{
// 暂不支持该方法
throw new Exception("新增日志");
}
catch (Exception ex)
...{
throw (ex);
}
}




/**////


/// 修改日志(不支持)
///

public void Modify()
...{
// 暂不支持该方法
throw new Exception("修改日志");
}




/**////


/// 删除日志
///

public void Del()
...{
// 暂不支持该方法
throw new Exception("修改日志");
}




/**////


/// 获取特定的日志集
///

/// 操作人
/// 开始时间
/// 结束时间
/// 排序字段
/// 0-降序,1-升序
/// 页码
/// 页行数
/// 总记录数
///
public static ArrayList GetList(string strOperator,DateTime dtStartTime,DateTime dtEndTime,string strOrderField,int intASC, int PageIndex, int rowCount, out int recordSum)
...{
return DataAccess.QueryLog(strOperator,dtStartTime,dtEndTime,strOrderField, intASC, PageIndex, rowCount, out recordSum);
}
}







前台页 Default.aspx







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




http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">




http://www.w3.org/1999/xhtml" >

客户端回调


































日志查询




















操作人员:





&nbsp; Width="90px">





操作时间:





&nbsp; ReadOnly="False" Width="90px">- ID="TxtEndTime" runat="server" CssClass="border"
ReadOnly="False" Width="90px">



















































 























GridLines="Horizontal" PageSize="15"
Width="95%" BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px" CellPadding="4">







































共有页结果
&nbsp;&nbsp;&nbsp;&nbsp;当前显示为第页&nbsp;&nbsp;&nbsp;15条/页&nbsp;&nbsp;
上一页
下一页
跳转至第













Type="string" />
PropertyName="Text" Type="DateTime" />
PropertyName="Text" Type="DateTime" />























Default.aspx.cs







using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.IO;
using System.Text;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Globalization;




public partial class _Default : System.Web.UI.Page,ICallbackEventHandler
...{
protected void Page_Load(object sender, EventArgs e)
...{
this.Submit.Attributes.Add("onclick", "QueryServer(txtOperator,TxtStartTime,TxtEndTime,1,"true");return false;");
this.DownListIndex.Attributes.Add("onchange", "QueryServer(txtOperator,TxtStartTime,TxtEndTime,this.value,"false");return false;");
}




回调分页#region 回调分页
private string serverReturn;




public string GetCallbackResult()
...{




string[] parts = serverReturn.Split('|');
//根据传递的方法名进行调用,并传递相应的参数,目前只支持一个参数
return (string)GetType().GetMethod(parts[0]).Invoke(this, new object[] ...{ parts[1] });
}




public void RaiseCallbackEvent(string eventArgument)
...{
serverReturn = eventArgument;
}




/**////


/// 根据从客户端传来的值,对GridView的内容进行更新,并将更新后的GridView的html返回
///

///
///




public string ServerMethodQuery(string arg)
...{
Logs.DataSourceID = "DataSourceLog";




string[] arrayArg = arg.Split('$');
this.txtOperator.Text = arrayArg[0];
this.TxtStartTime.Text= arrayArg[1];
this.TxtEndTime.Text = arrayArg[2];




intialPageSelect();
this.DownListIndex.SelectedValue = arrayArg[3];
Logs.DataBind();




//传入客户端字符串,并用"$"分割
StringBuilder strHtml = new StringBuilder();
strHtml.Append(RenderControl(Logs));
strHtml.Append("$");
strHtml.Append(DataLogic.recordSum.ToString());
strHtml.Append("$");
strHtml.Append(Convert.ToString(DataLogic.recordSum / DataAccess.RowsPerPage + 1));
strHtml.Append("$");
strHtml.Append(arrayArg[3]);
if (arrayArg[4] == "true")
...{
strHtml.Append("$");




intialPageSelect();
strHtml.Append(RenderControl(DownListIndex));
}




return strHtml.ToString();
}




private string RenderControl(Control control)
...{
StringWriter writer1 = new StringWriter(CultureInfo.InvariantCulture);
HtmlTextWriter writer2 = new HtmlTextWriter(writer1);




control.RenderControl(writer2);
writer2.Flush();
writer2.Close();




return writer1.ToString();
}




/**////


/// 初始化页下拉单
///

private void intialPageSelect()
...{
DownListIndex.Items.Clear();
for (int i = 0; i < (DataLogic.recordSum / DataAccess.RowsPerPage + 1); i++)
...{
this.DownListIndex.Items.Add(Convert.ToString(i + 1));
}




}
#endregion
}
如有错误,欢迎指正!






















添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.