Ho un gridview guidato dal database con il paging abilitato. Tutto funziona bene, ed è rilegata come segue su Page Load:Navigazione nelle pagine di GridView dai valori di url
sqldataadapter da = new saldatadapter("sql query"), con);
datatable dt = new datatable();
gridview1.datasource = dt;
gridview1.databind();
C'è un'opzione che posso consentire al numero di pagina appare automaticamente l'url? La ragione per cui voglio farlo è che posso inviare l'url tramite il numero di pagina, quindi quando l'utente fa clic sull'URL, la griglia visualizza i dati dalla pagina corretta.
UPDATE 2 - codice completo attuale, come richiesto:
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();
}
}
Questo mi dà un errore quando prova a cliccare sui numeri di paging sul fondo del datagrid. L'errore è il seguente:
Se carico la pagina fresca, verrà caricata. Se faccio quindi clic sulla pagina numero 5, visualizza ?page=5
nell'url che è quello che mi aspetto, ma per qualche motivo, la pagina 6 è selezionata sui numeri di impaginazione nella parte inferiore dello schermo. Se poi clicco pagina 10, ad esempio, l'URL cambia a ?page=5?page=10
che è chiaramente sbagliato, che dà l'errore:
Input string was not in a correct format.
int index = int.Parse(Request.QueryString["page"]);
'e.Cancel' mi dà l'errore' CS0201: solo assegnazione, chiamata, incremento, decrementi e nuove espressioni oggetto possono essere utilizzate come istruzioni'. – oshirowanen
@oshirowanen e.Cancel = true; – MikroDel
@oshirowanen ma non e.Cancel() = true; no **() ** – MikroDel