Индексация страницы GridView

У меня есть gridView: -

<asp:GridView ID="gvw_Lab_Details" AllowPaging="true" PageSize="3" OnPageIndexChanging="gvw_Lab_Details_PageIndexChanging" runat="server" EmptyDataText="No Previous Enrollments were Found." SkinID="gridviewSkin2">
</asp:GridView>

На стороне сервера: -

    public DataSet LabDS
    {
        get { return (DataSet)ViewState["LabDetails"]; }
        set { ViewState["LabDetails"] = value; }
    }

    #region Initialize.
    string _Requestdate = string.Empty;
    string _ID = string.Empty;
    #endregion

    #region Page Methods
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            // extracting the Lab_Requested Date from Query String.
            _Requestdate = (Request.QueryString["info"]);
            _ID = ((MyStateBag)Session["MyStateBag"]).MemberID;
            GetLabResults();
        }
    }

    #endregion

    private void GetLabResults()
    {
      using (SqlConnection cn = new SqlConnection(DBConnect.SqlServerConnection))
       {
            cn.Open();
            #region Pulls Existing Enrollments from SQL
            DataTable dt = new DataTable();
            using (SqlCommand cm = cn.CreateCommand())
            {
                // Create SQL Statement
                StringBuilder ct = new StringBuilder();
                ct.AppendLine("SELECT DISTINCT Key, Date, "
                + "NAME_First + ' ' + NAME_MI + ' ' + NAME_Last, "
                RESULT_VALUE, RESULT_UNITS ");
                ct.AppendLine("FROM [test].[dbo].[test]");
                ct.AppendLine("WHERE Date = @Date and ID = @ID");
                cm.Parameters.AddWithValue("@Date", _Requestdate);
                cm.Parameters.AddWithValue("@ID", _ID);
                cm.CommandType = CommandType.Text;
                cm.CommandText = ct.ToString();
                // Execute 
                cm.ExecuteNonQuery();

            #region Populate Gridview with extracted Data.
                SqlDataAdapter dr = new SqlDataAdapter(cm);
                dr.Fill(dt);
                this.LabDS  = new DataSet();
                this.LabDS.Tables.Add(dt);
                LoadGridView(1);
             #endregion
            }
            #endregion

        private void LoadGridView(int PageIndex)
        {
            gvw_Lab_Details.DataSource = this.LabDS;
            gvw_Lab_Details.DataBind();
        }


        protected void gvw_Lab_Details_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            LoadGridView(e.NewPageIndex);
        }

Однако мое индексирование, похоже, не работает, так как результаты 3 или меньше отображаются на первой странице, но как только результатов больше 4, я получаю по умолчанию «Предыдущие регистрации не найдены». Любые идеи о том, где я ошибаюсь?

это веб-приложение .NET.


person Philo    schedule 06.03.2014    source источник
comment
Проверьте код, который вы разместили, чего-то не хватает между концом метода Page_Load и using (SqlConnection cn =...   -  person helb    schedule 06.03.2014
comment
извините случайно пропустил.   -  person Philo    schedule 06.03.2014


Ответы (1)


Вы упускаете одну важную информацию. Вы должны сообщить GridView, на какую страницу вы переходите:

 protected void gvw_Lab_Details_PageIndexChanging(object sender, GridViewPageEventArgs e)
 {
        gvw_Lab_Details.PageIndex = e.NewPageIndex;
        LoadGridView(e.NewPageIndex);
 }
person Rick S    schedule 06.03.2014
comment
Я только что заметил, что хотя решение работает, первые 6 записей опущены. Так что, если моя студия управления SQL отвечает 33 строками, gridiew .NET показывает только 27. и если MS SQL отвечает 6, мой gridview .NET показывает 0 записей. Есть идеи, почему? - person Philo; 08.03.2014
comment
Индексация страницы начинается с нуля. Бьюсь об заклад, ваше мышление 1 является первой страницей. Ноль — это первая страница. - person Rick S; 08.03.2014
comment
Лоадгридвиев(1); Я попытался сделать это (0)... оба возвращают одинаковые результаты. Вот почему я был сбит с толку, и это все еще не имело бы смысла, потому что у My Gridview максимум 3 записи на странице. Если бы я потерял 1 страницу, мне бы не хватило всего 3 записей. В то время как на самом деле мне не хватает 6 записей, то есть 2 страниц. - person Philo; 08.03.2014