У меня есть gridview с поддержкой базы данных с включенным пейджингом. Все работает нормально и привязано следующим образом: page_load:
sqldataadapter da = new saldatadapter("sql query"), con);
datatable dt = new datatable();
gridview1.datasource = dt;
gridview1.databind();
Есть ли опция, которую я могу включить для номера страницы, автоматически появляется в URL-адресе? Причина, по которой я хочу это сделать, - это указать адрес 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, он отображает ?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"]);