发表时间:2009-03-17
最后修改:2009-03-17
我现在做一个GridView的分页程序,数据源分为三种:(1)页面初始时 一种数据源(2)另两个数据源为 在页面上
有两种查询方式来 查看信息:按姓名 按时间段
现在出现这种情况:在页面初始后 GridView 中载入的数据 点击 下一页 上一页 时页面中
的数据 是可以刷新的 在按姓名或者按时间段来 查看数据时 GridView 中也有数据 在页面中也能看得到 但是
当点击下一页 上一页时 GridView中的 数据就不刷新了。
我的上一页 下一页 这些按钮都是 采用超链接来实现的 我看其中的参数都正确 就是 点击的
时候 (在按姓名 和 按时间段) 查看的情况下 数据都不刷新。 那位老大 帮忙看看!
下面给出页面代码:
日志列表<%=linktemplate %>
当前用户:
数据记录:<% =total%>条
<%# Eval("al_id").ToString()%>
<%#Eval("al_ad_name").ToString()%>
<%#Eval("al_ip").ToString()%>
<%#Eval("al_create_date").ToString() %>
<%#Eval("al_operate").ToString() %>
<% = CopyRights %>
对应的页面类:
namespace RGS.Web.Admin
{
public partial class AdminLogList : AdminPageBase
{
public static Int32 logCount;
public String al_ad_name = RGSRequest.GetQueryString("al_ad_name");
public String begin_date = RGSRequest.GetQueryString("begin_date");
public String end_date = RGSRequest.GetQueryString("end_date");
public Int32 checktime = RGSRequest.GetQueryInt("checktime", 1);
public DateTime begin_Date,end_Date;
//选择面板的控制
public static Int32 selectdis ;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadLogList();
}
lblMessge.Text = "";
}
///
/// 数据的载入
///
private void LoadLogList()
{
try
{
begin_Date = Convert.ToDateTime(begin_date);
end_Date = Convert.ToDateTime(end_date);
}
catch (Exception ex)
{
ErrorProcess.CreateErrorMsg(ex.ToString());
begin_Date = DateTime.Now.AddDays(-1);
end_Date = DateTime.Now.AddDays(-1);
}
//在存储过程中,checktime为1时按无条件查询,2为按姓名 3 为按时间
//对应的存储过程我已经测试过了,没有问题。
bind(al_ad_name,checktime,begin_Date,end_Date);
}
///
/// 处理全部删除选择的数据
///
///
///
protected void btnDelete_Click(object sender, EventArgs e)
{
string al_ad_list = RGSRequest.GetFormSafeString("cboxSelect");
if (al_ad_list.Length == 0)
{
lblMessge.Text = "请选择要删除的行!!!";
}
else
{
logCount += AdminLog.AdminLog_DeleteLogListByLogID(al_ad_list);
if (logCount >= 0)
{
lblMessge.Text = "你已经删除" + logCount + "条日志记录";
}
}
LoadLogList();
}
///
/// 处理按时间段查询日志
///
///
///
///
protected void btnDaySelect_Click(object sender, EventArgs e)
{
selectdis = 1;
begin_date = RGSRequest.GetFormString("tboxBeginDay").Trim();
end_date = RGSRequest.GetFormString("tboxEndDay").Trim();
total = 0;
pageindex = 1;
checktime = 3;
LoadLogList();
}
///
/// 按用户名进行查询
///
///
///
protected void btnUserNameSelect_Click(object sender, EventArgs e)
{
al_ad_name = RGSRequest.GetFormSafeString("tboxUserName");
selectdis = 0;
total = 0;
pageindex = 1;
checktime = 2;
LoadLogList();
}
///
/// 处理数据绑定
///
protected void bind(string al_ad_name, Int32 checktime, DateTime begin_date, DateTime end_date)
{
if (total == 0)
{
docount = true;
}
DataSet ds = AdminLog.AdminLog_GetAdminLogList(al_ad_name,checktime,begin_date,end_date, pagesize, pageindex, docount, "al_create_date DESC");
if (ds != null)
{
this.GridView1.DataSource = ds.Tables[0];
this.GridView1.DataBind();
if (docount)//如果统计选项为true,取出统计
{
total = DataSetProcess.GetTotalFromDataSetTable(ds, 1);
}
}
ProcPaging();
}
//分页相关变量
public Int32 total = RGSRequest.GetQueryInt("t", 0);//总记录数
public Int32 pagesize = 30;//页大小
public Int32 pageindex = RGSRequest.GetQueryInt("p", 1);//当前页
public Int32 pages = 0;//总页数
private Boolean docount = false;
public String firstlink = "";//首页
public String perlink = "";//上一页
public String nextlink = "";//下一页
public String lastlink = "";//最后一页
public String alinks = "";//中间显示链接
///
/// 处理分页显示
///
public String linktemplate;
private void ProcPaging()
{
linktemplate = "href=?p={0}&t={1}&checktime=" + checktime + "&al_ad_name=" + al_ad_name + "&begin_date=" + begin_date + "&end_date=" + end_date;
if (total == 0)
{
firstlink = "";
perlink = "";
nextlink = "";
lastlink = "";
alinks = "";
}
else
{
pages = Convert.ToInt32(total / pagesize);//计算总页数
if (pages == 0)//如果取整数为0时设为1
pages = 1;
if (total > pages * pagesize)
pages += 1;
if (pageindex > 1)
{
firstlink = string.Format(linktemplate, 1, total);
perlink = string.Format(linktemplate, pageindex - 1, total);
}
if (pageindex < pages)
{
lastlink = string.Format(linktemplate, pages, total);
nextlink = string.Format(linktemplate, pageindex + 1, total);
}
if (pages > 1)
{
int minpage = (pageindex - 4) <= 1 ? 1 : pageindex - 4;
int maxpage = (pageindex + 4) >= pages ? pages : pageindex + 4;
StringBuilder sb = new StringBuilder();
if (minpage > 1)
sb.Append("
...");
for (int i = minpage; i < pageindex; i++)
{
sb.Append("
" + i.ToString() + " ");
}
sb.Append("
" + pageindex + "");
for (int i = pageindex + 1; i <= maxpage; i++)
{
sb.Append("<a " + string.Format(linktemplate, i, total) + "> " + i.ToString() + " </a>");
}
if (maxpage < pages)
sb.Append("
...");
alinks = sb.ToString();
}
}
}
}
}
存储过程:
ALTER PROCEDURE AdminLog_GetAdminLogList --读取管理日志 2009-03-17
(
@al_ad_name VARCHAR(30),--管理员用户ID
@checktime INT, --是否使用时间条件进行查询,1 不适用条件,2用户名,3时间段
@begin_date DATETIME, --操作时间下限 @checktime=0时任意输入一个时间
@end_date DATETIME , --操作时间上限 @checktime=0时任意输入一个时间
@pagesize INT, -- 页尺寸
@pageindex INT, -- 页码
@docount BIT, -- 返回记录总数, 1 值则返回,以查询结果表1的Total字段输出,表0为分页结果
@strorder VARCHAR(255) -- 排序字段,可由多个字段组合,如 al_ip,al_create_date desc(注意:不要加 ORDER BY)
)
AS
DECLARE @strWHERE varchar(5000)
SET @strWHERE=''
IF @checktime=2
BEGIN
SET @strWHERE =' AND al_ad_name ='''+@al_ad_name +''' '
END
IF @checktime = 3
BEGIN
SET @strWHERE = ' AND al_create_date >='''+ CONVERT(varchar(19), @begin_date, 120) +''' AND al_create_date <='''+ CONVERT(varchar(19), @end_date, 120) +''' '
END
SET @strWHERE = ' 1=1' + @strWHERE
--调用分页存储过程
EXEC PagingData 'Admin_Log','*','al_id',@pagesize,@pageindex,@docount,@strWHERE,@strorder
急需解决这个 按条件查询 的 翻页时的 gridview 的数据刷新问题,请帮帮忙