When the DataBoundControl has paging enabled, either the SelectMethod should return an IQueryable RRS feed

  • Question

  • User761356933 posted

    I have something odd going on. 

    This was working fine, until I added an update method to my code behind. I don't understand what its changed.

    My select method does return iqueryable supplier - but when I put I breakpoint it seems it never even enters the select method. Can someone help me out here as I have been stuck with this for days now.


    When the DataBoundControl has paging enabled, either the SelectMethod should return an IQueryable<ItemType> or should have all these mandatory parameters : int startRowIndex, int maximumRows, out int totalRowCount

    Select method:

    // The return type can be changed to IEnumerable, however to support
            // paging and sorting, the following parameters must be added:
            //     int maximumRows
            //     int startRowIndex
            //     out int totalRowCount
            //     string sortByExpression
            public IQueryable<supplier> GridView1_GetData()
                SupplierDBModel context = new SupplierDBModel();
                return (from s in context.suppliers
                        select s).AsQueryable();


                    <asp:GridView ID="GridView1" CssClass="table table-hover table-striped" SelectMethod="GridView1_GetData" DeleteMethod="GridView1_DeleteItem" UpdateMethod="GridView1_UpdateItem" AllowPaging="True"  AllowSorting="True" ItemType="PrincePortalWeb.Models.supplier" runat="server" AutoGenerateEditButton="True" AutoGenerateDeleteButton="True"              
                AutoGenerateSelectButton="True"  AutoGenerateColumns="False" ShowFooter="True"  DataKeyNames="supplierid" >
                             <asp:BoundField DataField="supplierid" HeaderText="ID" />
                            <asp:BoundField ApplyFormatInEditMode="True" DataField="suppliername" HeaderText="Customer">
                            <HeaderStyle Font-Bold="True" HorizontalAlign="Center" />
                            <ItemStyle HorizontalAlign="Center" />
                            <asp:BoundField DataField="status" HeaderText="Status">
                            <HeaderStyle Font-Bold="True" HorizontalAlign="Center" />
                            <ItemStyle HorizontalAlign="Center" />
                            <asp:BoundField DataField="whencompliant.date" HeaderText="When Compliant" />
                            <asp:BoundField DataField="reviewdate.date" HeaderText="Review Date" />
                            <asp:BoundField DataField="lastreviewedby" HeaderText="Reviewed By" />
                            <asp:BoundField DataField="webstatus" HeaderText="Portal Status" />

    Supplier context and class:

        public partial class SupplierDBModel : DbContext
            public SupplierDBModel()
                : base("name=SupplierDBModel")
                // Database.SetInitializer(new MigrateDatabaseToLatestVersion<SupplierDBModel, EF6Console.Migrations.Configuration>());
            public virtual DbSet<supplier> suppliers { get; set; }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            public partial class supplier 
                public int supplierid { get; set; }
                public string suppliername { get; set; }
                public string address1 { get; set; }
                public string county { get; set; }
                public string country { get; set; }
                public string telephone { get; set; }
                public string address2 { get; set; }
                public string postcode { get; set; }
                public string webstatus { get; set; }
                public status status { get; set; }
                public string LastreviewedBy { get; set; }
                [Column(TypeName = "datetime2")]
                public DateTime Whencompliant { get; set; }
                [Column(TypeName = "datetime2")]
                public DateTime Reviewdate { get; set; }
        public enum status

    Thank you

    Tuesday, July 10, 2018 8:01 AM

All replies

  • User761356933 posted


    I have found just having this in the code behind file throws the error. If I remove this method it works fine. I have put a breakpoint on this method and it doesn't enter it on load. So whats happening here? can anyone shed some light on this, I want to understand.

    If I comment this out its fine:

            protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
                GridViewRow row = GridView1.Rows[e.NewEditIndex];
                TextBox txtName = row.FindControl("txtSupplierName") as TextBox;
                using (SupplierDBModel context = new SupplierDBModel())
                    int supplierID = Convert.ToInt32(GridView1.DataKeys[e.NewEditIndex].Value);
                    supplier suppobj = context.suppliers.First(s => s.supplierid == supplierID);
                    suppobj.suppliername = txtName.Text.Trim();

    Tuesday, July 10, 2018 8:24 AM
  • User1724605321 posted

    Hi BluSky28,

    That is quite strange since the gridview even doesn't have the RowEditing event registered . In my opinion , it won't be the reason which leads to your error , it won't fire since it is not registered . Please double check your codes and try to find whether any other codes affect in this scenario .

    Best Regards,

    Nan Yu 

    Wednesday, July 11, 2018 2:14 AM