我现在要做一个利用GridView分页,查询出userInfo表里面的全部user信息,并进行分页,而页面上只显示了user表里面的部分字段信息,并没有全部显示,点击后面的详细信息,转到详细页面userdetails.aspx显示user的全部信息,假如我现在在第三页点击详细信息,点击userdetails.aspx页面的返回按钮,让它跳转回去的时候,也跳转在第三页怎么做?请高手指点
解决方案 »
- HyperLink 如何根据参数的不同链接到不同的页面?
- 服务器控件视图状态的问题
- 帮我看看什么问题?
- 这段代码谁能解决是出错在什么地方?加分
- 用vs.net编译.aspx而成的 .dll .pdb 文件(在/bin下)怎么删除不掉?
- 我正在学习用ubb(c#),请帮下忙解决下以下问题
- 一个datagrid和日历控件的问题!
- 关于网站设计,视频播放,带宽计算,客户体验的问题,向前辈请教
- 请问谁有用VS.net制作asp.net程序的教程之类的东东?
- 请教飞刀,思归:.net环境下frameset的数据传递
- Cache存储的数据可以在其他页面使用吗?
- 使用js 保存input file 中的图片
[/Quote]
具体一点啊
先 搞个 分页的 用户 控件 也可以自己 拖几个 控件
代码 如下
:namespace Light.EXP.WebUI.SystemFrame
{
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 DataPager : System.Web.UI.UserControl
{
#region 分页相关变量定义 属性
/// <summary>
/// 每页显示的数据个数 /// </summary>
private int PageSize
{
get
{
if (this.ViewState["PageSize"] != null) //相当于ViewState隐藏的一个控件 视图
{
return Convert.ToInt32(this.ViewState["PageSize"]);
}
return 10; //每页10条数据默认
}
set
{
this.ViewState["PageSize"] = value;
}
} /// <summary>
/// 当前要显示的页数
/// </summary>
public int CurrentPage
{
get
{
if (this.ViewState["CurrentPage"] != null)
{
return Convert.ToInt32(this.ViewState["CurrentPage"]);
}
return 1;
}
set
{
this.ViewState["CurrentPage"] = value;
}
} /// <summary>
/// 待分页控件的ID
/// </summary>
public string ControlNameToPager
{
get
{
if (this.ViewState["ControlNameToPager"] != null)
{
return this.ViewState["ControlNameToPager"].ToString();
}
return string.Empty;
}
set
{
this.ViewState["ControlNameToPager"] = value;
}
}
后面还有
/// <summary>
/// 本次执行分页数据的总的数据行数
/// </summary>
private Int64 TotalCount
{
get
{
if (this.ViewState["TotalCount"] != null)
{
return Convert.ToInt64(this.ViewState["TotalCount"]);
}
return 0;
}
set
{
this.ViewState["TotalCount"] = value;
}
}
/// <summary>
/// 委托函数变量
/// </summary>
//private GetPagerDataDelegate GetPagerData
//{
// get
// {
// if (this.ViewState["GetPagerData"] != null)
// {
// return (GetPagerDataDelegate)this.ViewState["GetPagerData"];
// }
// return _GetPagerData;
// }
// set
// {
// this.ViewState["GetPagerData"] = value;
// }
//}
private static GetPagerDataDelegate _GetPagerData = null;
//------------------------------------------------------------------------------------
public delegate DataSet GetPagerDataDelegate(int pageIndex, ref Int64 totalCount);
//------------------------------------------------------------------------------------
#endregion #region 分页事件
/// <summary>
/// 首页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbHome_Click(object sender, EventArgs e)
{
CurrentPage = 1;
this.ShowData();
} /// <summary>
/// 上一页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbPriv_Click(object sender, EventArgs e)
{
CurrentPage--; //当前页--
this.ShowData();
} /// <summary>
/// 下一页 /// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbNext_Click(object sender, EventArgs e)
{
CurrentPage++; //当前页++
this.ShowData();
} /// <summary>
/// 尾页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbLast_Click(object sender, EventArgs e)
{
CurrentPage = (int)Math.Ceiling((decimal)(TotalCount / (decimal)PageSize)); //Ceiling
this.ShowData();
} /// <summary>
/// 跳转到第几页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lnkbGo_Click(object sender, EventArgs e)
{
if (this.txtbNum.Text.Trim().Length == 0)
{
CurrentPage = 1;
}
else
{
CurrentPage = int.Parse(this.txtbNum.Text);
}
this.ShowData();
}
#endregion #region 分页实现
/// <summary>
/// 引用此分页控件的Web页面调用的分页实现方法 /// </summary>
/// <param name="GetPagerData"></param>
/// <param name="PageSize"></param>
public void BindDataPage(GetPagerDataDelegate getPagerData, int pageSize)
{
PageSize = pageSize;
_GetPagerData = getPagerData;
this.ShowData();
} /// <summary>
/// 显示数据
/// </summary>
/// <param name="GetPagerData"></param>
private void ShowData()
{
Int64 totalCount = 0;
DataSet ds = _GetPagerData(CurrentPage, ref totalCount); TotalCount = totalCount;
//绑定数据
object listControl = this.Parent.FindControl(this.ControlNameToPager); if (listControl.GetType().ToString() == "System.Web.UI.WebControls.DataList")
{
DataList list = (DataList)listControl;
list.DataSource = ds;
list.DataBind();
}
if (listControl.GetType().ToString() == "System.Web.UI.WebControls.GridView")
{
GridView list = (GridView)listControl; //查询时,如果没有数据,GridView控件表头需显示出来 -- 2007-12-02 刘道营添加 if (ds.Tables[0].Rows.Count == 0)
{
ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
list.DataSource = ds;
list.DataBind();
int columnCount = list.Rows[0].Cells.Count;
list.Rows[0].Cells.Clear();
list.Rows[0].Cells.Add(new TableCell());
list.Rows[0].Cells[0].ColumnSpan = columnCount;
list.Rows[0].Cells[0].Text = "没有符合条件的数据!";
}
else
{
list.DataSource = ds;
list.DataBind();
}
} this.SetPagerUI();
} /// <summary>
/// 设置分页控件的UI显示
/// </summary>
/// <param name="TotalCount"></param>
private void SetPagerUI()
{
this.DisableControl(); int totalPages = (int)Math.Ceiling((decimal)(TotalCount / (decimal)PageSize)); string CurrentPageText = "总数{0}条 每页{1}条 共{2}页 当前第{3}页"; if (totalPages < 1)
{
this.lbCurrentPageText.Text = "没有可以显示的数据";
this.txtbNum.Text = "";
}
else
{
this.lbCurrentPageText.Text = string.Format(CurrentPageText, new object[] { TotalCount, PageSize, totalPages, CurrentPage });
this.txtbNum.Text = CurrentPage.ToString();
} if (totalPages > 1)
{
if (CurrentPage != 1)
{
this.lnkbHome.Enabled = true;
this.lnkbPriv.Enabled = true;
}
else
{
this.lnkbHome.Enabled = false;
this.lnkbPriv.Enabled = false;
}
if (CurrentPage < totalPages)
{
this.lnkbNext.Enabled = true;
this.lnkbLast.Enabled = true;
}
else
{
this.lnkbNext.Enabled = false;
this.lnkbLast.Enabled = false;
}
this.txtbNum.Enabled = true;
this.lnkbGo.Enabled = true; //验证跳转到的值是否在正常范围内 RangeValidator rv = new RangeValidator();
rv.ControlToValidate = this.txtbNum.ID;
rv.MaximumValue = totalPages.ToString();
rv.MinimumValue = "1";
rv.Type = ValidationDataType.Integer;
rv.EnableClientScript = true;
rv.ToolTip = "页号必须为数值,且位于" + rv.MinimumValue + " - " + rv.MaximumValue + "之间。";
rv.ErrorMessage = "*"; this.pnlValid.Controls.Add(rv);
}
} /// <summary>
/// 禁用分页控制按钮
/// </summary>
private void DisableControl()
{
this.lnkbHome.Enabled = false;
this.lnkbLast.Enabled = false;
this.lnkbNext.Enabled = false;
this.lnkbPriv.Enabled = false;
this.lnkbGo.Enabled = false;
this.txtbNum.Enabled = false;
}
#endregion
}
}
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="DataPager.ascx.cs" Inherits="Light.EXP.WebUI.SystemFrame.DataPager" %>
<table cellpadding="0" cellspacing="0" width="570" align="center">
<tr>
<td align=center>
<table cellpadding="0" cellspacing="0" width="100%" align="center">
<tr>
<td width="200" align="center"><asp:Label ID="lbCurrentPageText" runat="server"></asp:Label></td>
<td width="200" align="center">
<asp:LinkButton ID="lnkbHome" runat="server" onclick="lnkbHome_Click">首页</asp:LinkButton>
<asp:LinkButton ID="lnkbPriv" runat="server" onclick="lnkbPriv_Click">上一页</asp:LinkButton>
<asp:LinkButton ID="lnkbNext" runat="server" onclick="lnkbNext_Click">下一页</asp:LinkButton>
<asp:LinkButton ID="lnkbLast" runat="server" onclick="lnkbLast_Click">最后一页</asp:LinkButton>
</td>
<td width="80" align="center">
<asp:TextBox ID="txtbNum" runat="server" Width="30px" Height="15px"></asp:TextBox>
</td>
<td align="left">
<asp:Panel ID="pnlValid" runat="server">
<asp:LinkButton ID="lnkbGo" runat="server" onclick="lnkbGo_Click">GO</asp:LinkButton>
</asp:Panel>
</td>
</tr>
</table>
</td>
</tr>
</table>
set QUOTED_IDENTIFIER ON
go
/*********************************************************************************
*过程名称: uspGetBillDispenses
*功能描述: 获取多条票据分发信息
*输入参数:
@receiveBillPerson NVARCHAR(40), --领票人名称
@billType VARCHAR(50), --票据类型 @pageIndex INT, --待读取的页索引
@pageSize INT, --每页显示的记录数
@recordCount INT OUTPUT --总记录数
*输出参数:
@recordCount int out
*返回值:
PKID, --票据ID
BillType, --票据类型
BillStartCode, --票据开始号
BillEndCode, --票据结束号
ReceiveBillPerson, --领票人名称
AcceptStation, --接货点
ReceiveBillTime,
ReleasePerson
*作 者: 乔虎跃
*创建日期: 2009-3-30
***********************************************************************************/
ALTER proc [dbo].[uspGetBillDispenses]
(
@BillType varchar(50), --票据类型
@ReceiveBillPerson varchar(50), --领票人名称
@pageIndex INT, --待读取的页索引
@pageSize INT, --每页显示的记录数
@recordCount INT OUTPUT --总记录数
)
AS
BEGIN
DECLARE @sqlRC NVARCHAR(4000) --RecordCount SQL
DECLARE @sqlRS NVARCHAR(4000) --ResultSet SQL
--删除表中2条相同记录
Set @sqlRc='Select @recordCount = Count(*) From billmgt_billDispense where 0=0 '
if @BillType<>'全部'
begin
set @sqlrc=@sqlrc+' and BillType='''+@BillType+''''
end
if @ReceiveBillPerson<>''
begin
set @sqlrc=@sqlrc+' and ReceiveBillPerson like ''%''+REPLACE('''+@ReceiveBillPerson+''',''%'', ''/%'') + ''%'' ESCAPE ''/'' '
end
EXEC sp_executesql @sqlRC, N'@recordCount INT OUTPUT', @recordCount OUTPUT
set @sqlrs='select pkid,BillType,BillStartcode,BillEndCode,receiveBillperson,acceptstation,ReceiveBillTime,releaseperson from(Select PKID,BillType,BillStartcode,BillEndCode,receiveBillperson,acceptstation,ReceiveBillTime,releaseperson ,ROW_NUMBER() OVER (ORDER BY BillType desc) AS SerialNumber From billmgt_billDispense where 0=0 '
--ROW_NUMBER() OVER (ORDER BY BillType desc) AS SerialNumber 他是一个自定义列,和别的列要有 逗号
if @BillType<>'全部'
begin
set @sqlrs=@sqlrs+' and BillType='''+@BillType+''' '
end
if @ReceiveBillPerson<>''
begin
set @sqlrs=@sqlrs+' and ReceiveBillPerson like ''%''+REPLACE('''+@ReceiveBillPerson+''',''%'', ''/%'') + ''%'' ESCAPE ''/'' '
end
SET @sqlRS =
@sqlRS +
' )as t where t.SerialNumber > ' + CONVERT(NVARCHAR(100), (@pageIndex - 1) * @pageSize) +
' and t.SerialNumber <= ' + CONVERT(NVARCHAR(100), @pageIndex * @PageSize) EXEC (@sqlRS)
END
你 可以 把我 的 参数换下 就可以了
在單擊 按鈕 的 按鈕單擊事件裏 寫session = gridview 當前的頁數
然後在你的 userdetails.aspx 頁面裏 string str=session
得到 頁數。 再把 str 值賦給 userdetails.aspx 頁面的 gridview 控件屬性中
這樣就好了!!
你說的 點擊 返回 也能這樣 你再這麼操作一次就好了我說的這些是 思路,代碼自己 寫吧 呵呵
2.在详细画面点击返回后
在主画面的page_load中判断下
if (来自详细画面)
{
取到当前页码。
根据页码显示grdiview
}
<tr>
<td class="orangeLine">
</td>
</tr>
<tr>
<td align="center" style="padding-top: 3px;" height="26" bgcolor="#D9E5F5" >
<asp:HyperLink ID="hl_page_first" runat="server">首页</asp:HyperLink>
|
<asp:HyperLink ID="hl_page_pre" runat="server">上一页</asp:HyperLink>
|
<asp:HyperLink ID="hl_page_next" runat="server">下一页</asp:HyperLink>
|
<asp:HyperLink ID="hl_page_last" runat="server">尾页</asp:HyperLink>
<asp:DropDownList ID="drpPage" runat="server"></asp:DropDownList>
<asp:Button ID="btnGO" runat="server" Text="GO" onclick="btnGO_Click" />
</td>
</tr>
</table>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int page = 0; if (Request.QueryString["page"] != null && Request.QueryString["page"].ToString() != "")
page = Convert.ToInt32(Request.QueryString["page"]);
this.BindNews(page);
}
}
public void BindNews(int page)
{
CBIChinaNews cbiChinaNews = new CBIChinaNews();
DataTable dt = cbiChinaNews.GetCbiAllChinaNews(); gvNews.DataSource = dt;
gvNews.PageIndex = page;
gvNews.DataBind();
lgvCount.Text = dt.Rows.Count.ToString();
string url = "newsList.aspx";
if (page == 0)
{
hl_page_first.Enabled = false;
hl_page_pre.Enabled = false;
hl_page_last.Enabled = true;
hl_page_next.Enabled = true;
}
else
{
hl_page_first.Enabled = true;
hl_page_pre.Enabled = true;
hl_page_last.Enabled = true;
hl_page_next.Enabled = true;
hl_page_first.NavigateUrl = url + "?page=0";
hl_page_pre.NavigateUrl = url + "?page=" + Convert.ToString(page - 1);
}
if (page + 1 >= gvNews.PageCount)
{
hl_page_first.Enabled = true;
hl_page_pre.Enabled = true;
hl_page_last.Enabled = false;
hl_page_next.Enabled = false;
}
else
{
hl_page_last.Enabled = true;
hl_page_next.Enabled = true;
hl_page_last.NavigateUrl = url + "?page=" + Convert.ToString(gvNews.PageCount - 1);
hl_page_next.NavigateUrl = url + "?page=" + Convert.ToString(page + 1);
}
lgvPage.Text = Convert.ToString(page + 1) + "/" + gvNews.PageCount.ToString();
}protected void btnGO_Click(object sender, EventArgs e)
{
this.BindNews(Convert.ToInt32(this.drpPage.Text) - 1);
}这个也挺好的