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

Reading number is top 10 articles
smarty技术学习,修改php模板的一点体会_[PHP教程]
PHP截取指定长度的文字_[PHP教程]
SQL Server 2005数据库升级技巧_[SQL Server教程]
ASP.NET防止SQL注入攻击常用方法_[Asp.Net教程]
ADO.NET概述
在.NET2.0中使用自定义事务操作_[Asp.Net教程]
ASP.NET生成n位不同的验证码_[Asp.Net教程]
ASP.NET页面事件:顺序与回传详解_.net资料_编程技术
cookies的丢失和中文乱码_[Asp.Net教程]
动态网页技术:利用PHP制作简单的内容采集器_php资料_编程技术
Reading number is top 10 pictures
代沟,真好
In the world the most mysterious 21 place landscape2
分手的感悟
NeedWallpaper1
Sell the barbecue as says father du breul5
Fan bingbing black wings for platform and DanLuoWang believes beauty1
China's first snake village1
Absolutely shocked. National geographic 50 animal photographys8
Perfect small Laurie2
美女就是美女
Download software ranking
虚拟机汉化软件
Rio big adventure
Tram sex maniac 2 (H) rar bag14
C#高级编程(第4版)
致我们终将逝去的青春
Unix video tutorial3
Such love down(擒爱记)
在线棋牌游戏3.05版
Boxer vs Yellow2
C#与.NET技术平台实战演练
delv published in(发表于) 2014/1/16 9:32:58 Edit(编辑)
客户端回调实现gridView无刷新分页_[Asp.Net教程]

客户端回调实现gridView无刷新分页_[Asp.Net教程]

客户端回调实现gridView无刷新分页_[Asp.Net教程]

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


一、存储过程


包头:


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" %>





客户端回调


























日志查询













操作人员:



&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.