GridView привязан к Datatable — подкачка не работает должным образом

У меня есть веб-форма, настроенная с нажатием кнопки, которая анализирует a .TXT и помещает его в datatable. после завершения синтаксического анализа datatable привязывается к gridview. Я пытался добавить подкачку, так как я получаю тонны строк, но это, кажется, не работает должным образом. Всякий раз, когда я нажимаю на следующей странице сетка исчезает и для того, чтобы он снова появился на правильной странице, мне нужно нажать на кнопку еще раз.

Я попытался добавить следующий код в источник :

<asp:GridView ID="GridView1" Runat="server" 
     AutoGenerateColumns="true"
     AllowPaging="True" OnPageIndexChanging="OnPageIndexChanging" >

и это немного :

protected void OnPageIndexChanging(object sender, EventArgs e)
{
  GridView1.PageIndex = e.NewPageIndex; 
  GridView1.DataBind();
}

но это, кажется, ничего не меняет. Есть идеи, что я делаю неправильно?

2 ответа

  1. Попробуйте добавить событие OnPageIndexChanging в GridView

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true"
    OnPageIndexChanging="OnPageIndexChanging" PageSize="5">
    

    и ваш aspx.код cs. Попробуйте привязать Gridview к событию Page_Load.

      protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridView1.DataBind();
        }
    
     protected void Page_Load(object sender, EventArgs e)
      { this.BindGrid();}
    
     private void BindGrid()
        {
            string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT * From [dbo].[your table] "))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                    {
                        cmd.Connection = con;
                        sda.SelectCommand = cmd;
                        using (DataTable dt = new DataTable())
                        {
                            sda.Fill(dt);
                            GridView1.DataSource = dt;
                            GridView1.DataBind();
                        }
                    }
                }
            }
        }
    
  2. protected void OnPageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            //here yo have to assign datasource 
           //Some thing like this
           ///GridView1.DataSource=DataTable;
            GridView1.DataBind();
        }