osh*_*nen 11 .net c# asp.net gridview .net-3.5
我有一个启用了分页的数据库驱动的gridview.一切正常,并在page_load上绑定如下:
sqldataadapter da = new saldatadapter("sql query"), con);
datatable dt = new datatable();
gridview1.datasource = dt;
gridview1.databind();
Run Code Online (Sandbox Code Playgroud)
是否有一个选项,我可以启用页面号自动出现在网址中?我想这样做的原因是我可以通过电子邮件发送带有页码的URL,然后当用户点击该URL时,它会使gridview显示来自正确页面的数据.
更新2 - 请求的当前完整代码:
public partial class conflict_search_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.QueryString["page"] != null)
{
int index = int.Parse(Request.QueryString["page"]);
GridView1.PageIndex = index;
BindData();
}
else
{
BindData();
}
}
else
{
BindData();
}
}
private void BindData()
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["connString"]);
SqlDataAdapter da = new SqlDataAdapter("sql query here which returns over 100 pages", con);
DataTable dt = new DataTable();
da.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
int index = e.NewPageIndex + 1;
string url = HttpContext.Current.Request.Url.AbsoluteUri;
e.Cancel = true;
Response.Redirect(string.Format("{0}?page={1}", url, index));
}
protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
BindData();
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试单击datagrid底部的分页号时,这会给我一个错误.错误如下:
如果我加载页面新鲜,它将加载.如果我然后单击第5页,它会显示?page=5在我期望的URL中,但出于某种原因,在屏幕底部的分页编号上选择了第6页.如果我然后单击第10页,例如,url更改?page=5?page=10为明显错误,这会给出错误:
Input string was not in a correct format.
int index = int.Parse(Request.QueryString["page"]);
Run Code Online (Sandbox Code Playgroud)
使用:
protected void GridView1_PageIndexChanging(Object sender, GridViewPageEventArgs e)
{
int index = e.NewPageIndex + 1;
string url = HttpContext.Current.Request.Url.AbsoluteUri;
e.Cancel;
Response.Redirect(string.Format("{0}?page={1}", url, index));
}
PageLoad(...)
{
if (!Page.IsPostBack)
{
if (Request.QueryString["page"] != null)
{
int index = int.Parse(Request.QueryString["page"]);
// bind your gridview
GridView1.PageIndex = index;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您更改函数 GridView1_PageIndexChanging 中的代码,如下所示,一切都会起作用:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
e.Cancel = true;
int index = e.NewPageIndex;
string urlPath = HttpContext.Current.Request.Url.AbsoluteUri;
Uri uri = new Uri(urlPath);
string url = uri.GetLeftPart(UriPartial.Path);
Response.Redirect(string.Format("{0}?page={1}", url, index));
}
Run Code Online (Sandbox Code Playgroud)
您也不需要处理GridView1_PageIndexChanged事件。
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |