Hi Jacob_Zac,
Jacob_Zac
I can see that you are using SqlDataSource. I am using model binding with EF. I have tried the following code:
Jacob_Zac
PageIndex is properly set, but in gridview first page is displayed and not the last.
According to the above code, it seems fine. Because you display data with model binding, So I usethe code and try to reproduce your problem, but I find it's ok.
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Students1.aspx.cs" Inherits="ContosoUniversity.Students1" %><asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"></asp:Content><asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server"></asp:Content><asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server"><asp:HyperLink NavigateUrl="~/AddStudent1.aspx" Text="Add New Student" runat="server" /><br /><br /><asp:Label Text="Show:" runat="server" /><asp:DropDownList AutoPostBack="true" ID="DisplayYear" runat="server"><asp:ListItem Text="All" Value="" /><asp:ListItem Text="Freshman" /><asp:ListItem Text="Sophomore" /><asp:ListItem Text="Junior" /><asp:ListItem Text="Senior" /></asp:DropDownList><asp:ValidationSummary ShowModelStateErrors="true" runat="server" /><asp:GridView runat="server" ID="studentsGrid" ItemType="ContosoUniversity.Models.Student" DataKeyNames="StudentID" SelectMethod="studentsGrid_GetData" OnPreRender="studentsGrid_PreRender" UpdateMethod="studentsGrid_UpdateItem" DeleteMethod="studentsGrid_DeleteItem" AllowSorting="false" AllowPaging="true" PageSize="4" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" AutoGenerateColumns="false"><Columns><asp:DynamicField DataField="StudentID" /><asp:DynamicField DataField="LastName" /><asp:DynamicField DataField="FirstName" /><asp:DynamicField DataField="Year" /><asp:DynamicField DataField="EnrollmentDate" /> <asp:TemplateField HeaderText="Total Credits"><ItemTemplate><asp:Label ID="Label1" Text="<%# Item.Enrollments.Sum(en => en.Course.Credits) %>" runat="server" /></ItemTemplate></asp:TemplateField> <asp:HyperLinkField Text="Courses" DataNavigateUrlFormatString="~/Courses1.aspx?StudentID={0}" DataNavigateUrlFields="StudentID" /> </Columns></asp:GridView><br /><br /><asp:Label Text="Using code-behind file" ForeColor="Red" runat="server" /></asp:Content>
using ContosoUniversity.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.ModelBinding; using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace ContosoUniversity { public partial class Students1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } public IQueryable<Student> studentsGrid_GetData([Control] AcademicYear? displayYear) { SchoolContext db = new SchoolContext(); var query = db.Students.Include(s => s.Enrollments.Select(e => e.Course)); if (displayYear != null) { query = query.Where(s => s.Year == displayYear); } return query; } public void studentsGrid_UpdateItem(int studentID) { using (SchoolContext db = new SchoolContext()) { Student item = null; item = db.Students.Find(studentID); if (item == null) { ModelState.AddModelError("", String.Format("Item with id {0} was not found", studentID)); return; } TryUpdateModel(item); if (ModelState.IsValid) { db.SaveChanges(); } } } public void studentsGrid_DeleteItem(int studentID) { using (SchoolContext db = new SchoolContext()) { var item = new Student { StudentID = studentID }; db.Entry(item).State = System.Data.EntityState.Deleted; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { ModelState.AddModelError("", String.Format("Item with id {0} no longer exists in the database.", studentID)); } } } protected void studentsGrid_PreRender(object sender, EventArgs e) { if (!IsPostBack) { if (studentsGrid.PageCount > 1) studentsGrid.PageIndex = studentsGrid.PageCount - 1; } } } }
I suspect there are some problems in your code. You could refer to the following link to find if your code have some problem about model binding.
http://www.asp.net/web-forms/overview/presenting-and-managing-data/model-binding/retrieving-data
I hope it's helpful to you.
Best Regards,
Klein zhang