Страница обновляется при смене страницы с постраничного в gridview - PullRequest
0 голосов
/ 29 июня 2018

Я реализовал функциональность paging в моем gridview. Ниже приведен код

<asp:GridView ID="grdCMPChangeDetails" runat="server" CssClass="table table-bordered" AutoGenerateColumns="false" AllowPaging="true" PageSize="1" PageIndex="1"
                                        OnPageIndexChanging="grdCMPChangeDetails_PageIndexChanging">
                                        <Columns>
                                            <asp:BoundField ItemStyle-Width="150px" DataField="SAP-ID" HeaderText="SAP ID" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="LAT" HeaderText="Latitude" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="LONG" HeaderText="Longitude" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="R4GSTATE" HeaderText="State" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="OLD_LATITUDE" HeaderText="Old Latitude" />
                                            <asp:BoundField ItemStyle-Width="150px" DataField="OLD_LONGITUDE" HeaderText="Old Longitude" />
                                        </Columns>
                                    </asp:GridView>

CS

Datatbind

grdCMPChangeDetails.DataSource = dtSuccessRecord;
                    grdCMPChangeDetails.DataBind();

protected void grdCMPChangeDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grdCMPChangeDetails.PageIndex = e.NewPageIndex;
    grdCMPChangeDetails.DataBind();
}

но при смене страницы нет, она не работает и вместо этого страница обновляется.

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Я могу заметить, что вы вызываете DataBind метод управления сеткой. Вы должны пройти полный процесс связывания, чтобы внести изменения. Вместо этого измените событие PageIndexChanging на следующее:

protected void grdCMPChangeDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    grdCMPChangeDetails.PageIndex = e.NewPageIndex;
    // Fetch your results from db again or save your search results in ViewState so that you are not hitting the database again and again
    var dtSuccessRecord = SomeDatabaseCall(); 
    // Attach it to the Grid Control again and then head towards binding it.
    grdCMPChangeDetails.DataSource = dtSuccessRecord;
    grdCMPChangeDetails.DataBind();
}
0 голосов
/ 30 июня 2018

Сначала поставьте Grid в Update Panel

<asp:UpdatePanel ID="updatePanel" runat="server">
   <ContentTemplate>
       //YourGrid
   </ContentTemplate>
</asp:UpdatePanel>

вам просто нужно создать метод для заполнения GridView как это

private void populateGrid()
{
   //Code For Populating GridView
}

положить его на страницу загрузки вот так

protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {                
                populateGrid();
            }
        }

on Page Index как это

   protected void grdCMPChangeDetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                grdCMPChangeDetails.PageIndex = e.NewPageIndex;
                populateGrid();              
            }
            catch (Exception ex)
            {

            }
        }

И все готово

0 голосов
/ 29 июня 2018

Я думаю, вам нужно поместить сетку View в панель обновлений, чтобы избежать вашей проблемы:

<asp:UpdatePanel ID="myUpdPanel" runat="server" UpdateMode="Conditional">
   <asp:GridView ID="grdCMPChangeDetails" runat="server" CssClass="table table-bordered" 
    AutoGenerateColumns="false" AllowPaging="true" PageSize="1" PageIndex="1"                                       
    OnPageIndexChanging="grdCMPChangeDetails_PageIndexChanging">
   <Columns>
      <asp:BoundField ItemStyle-Width="150px" DataField="SAP-ID" HeaderText="SAP ID" />
      <asp:BoundField ItemStyle-Width="150px" DataField="LAT" HeaderText="Latitude" />
      <asp:BoundField ItemStyle-Width="150px" DataField="LONG" HeaderText="Longitude" />
      <asp:BoundField ItemStyle-Width="150px" DataField="R4GSTATE" HeaderText="State" />
      <asp:BoundField ItemStyle-Width="150px" DataField="OLD_LATITUDE" HeaderText="Old Latitude" />
      <asp:BoundField ItemStyle-Width="150px" DataField="OLD_LONGITUDE" HeaderText="Old Longitude" />
   </Columns>
   </asp:GridView>
</asp:UpdatePanel>
...