我注意到当我删除gridview中的某个项目时,该页面将回发,并且我删除的项目仍然在gridview中可见。但是当我刷新包含gridview的网页时,删除的项目在gridview中不再可见。
所以我决定在代码中执行Response.Redirect,以便删除的项目不再可见。它确实工作正常,但它总是回到gridview的第一页索引。目前我的gridview中有5页索引。如果我删除一个数据让我们说在页面索引5中,response.redirect将执行,然后它将返回页面索引1.我需要一直回到页面索引5,以检查数据是否被删除在我的gridview中,是否实际删除了。
现在我在网上找到了一段关于如何在刷新网页时保持同一页面索引的代码。解决方案是Sessions。我已经将代码与会话集成在一起,但现在问题就出现了。它始终保留在您进入的最后一页索引中。假设您在gridview的页面索引5中,然后您转到主页,如果您返回到具有gridview的网页,它仍将在页面索引5中。
我想要发生的是当我删除gridview中的项目时,它将刷新网页,但gridview页面索引将位于您只进入一次的最后一页索引上,以便删除的项目将不再可见。最后,当我决定转到不同的页面(比如主页或关于页面)并返回到具有gridview的网页时,它应该能够重置为gridview的第一个索引。怎么做到这一点?我希望这对你们有意义。
以下是代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack){
bindgridviewguitaritems();
if (Session["pageNumber"] != null)
{
GridViewIndexChanging(GuitarItemsGridView, new GridViewPageEventArgs((int)Session["pageNumber"]));
}
}
}
protected void GridViewIndexChanging(object sender, GridViewPageEventArgs e)
{
GuitarItemsGridView.PageIndex = e.NewPageIndex;
Session["pageNumber"] = e.NewPageIndex;
//whatever your page index changing does...
}
protected void GuitarItemsGridViewBtn_Click(object sender, EventArgs e)
{
Button btn = sender as Button;
GridViewRow gridrow = btn.NamingContainer as GridViewRow;
int id = Convert.ToInt32(GuitarItemsGridView.DataKeys[gridrow.RowIndex].Value.ToString());
using (var context = new MusicStoreDBEntities())
{
var bay = (from s in context.stringInstrumentItems where s.itemId == id select s).FirstOrDefault();
context.stringInstrumentItems.Remove(bay);
context.SaveChanges();
}
bindgridviewguitaritems();
Response.Redirect("~/Pages/OverviewGuitarData.aspx");