我有一个数据库驱动的gridview启用分页。一切工作正常,并绑定在Page_Load中,如下所示:从url值导航gridview页
sqldataadapter da = new saldatadapter("sql query"), con);
datatable dt = new datatable();
gridview1.datasource = dt;
gridview1.databind();
有,我可以使页面号码自动出现在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();
}
}
这给了我一个错误,当我尝试在寻呼号码在DataGrid的底部点击。错误如下:
如果我加载页面新鲜,它会加载。如果我然后点击第5页,它会在我期望的url中显示?page=5
,但由于某种原因,页面6在屏幕底部的分页号上被选中。如果我再单击第10页例如,URL改变?page=5?page=10
这显然是错误的,这给了错误:
Input string was not in a correct format.
int index = int.Parse(Request.QueryString["page"]);
'e.Cancel'给我错误'CS0201:只有赋值,调用,增量,递减和新的对象表达式可以用作语句'。 – oshirowanen
@oshirowanen e.Cancel = true; – MikroDel
@oshirowanen但不是e.Cancel()= true;没有**()** – MikroDel