Почему asp.net эффективно не выполняет нумерацию страниц для элементов управления gridview? - PullRequest
1 голос
/ 26 февраля 2011

У меня есть сайт с тысячами записей, и каждый раз, когда я совершаю действие, gridview отправляет около 300kb с помощью ajax.Я пытаюсь сделать пользовательскую нумерацию страниц, сохраняя функциональность ajax, сортировку, но это так сложно.Я ищу взлом на это, но ничего не нахожу.

Ссылки о: http://www.nikhedonia.com/notebook/entry/efficient-paging-for-gridview/ http://kpumuk.info/asp-net/gridview-with-custom-digg-like-pager/

@ mellamokb, это способ, которым я связываю данные с сеткой

КОД:

Dim res = From r In dc.Reservas _
    From u In dc.UsuariosData Where r.usr_Id = u.usr_Id _
    From c In dc.Campings Where c.camp_Id = r.camp_Id And r.sta_Id <> 2 _
    From rec In dc.OrdenesRegistros Where rec.rec_Id = r.rec_Id _
    From o In dc.Ordenes Where o.ord_Id = rec.ord_Id _
    From p In dc.Pagos Where p.pay_Id = o.pay_Id _
    From z In dc.Zonas Where z.zon_Id = r.zon_Id _
    Select New With {.res_Id = r.res_Id, _
        .usr_NickName = u.usr_NickName, .usr_Name = u.usr_Name, _
        .usr_LastName = u.usr_LastName, .usr_Email = u.usr_Email, _
        .usr_Cel = u.usr_Cel, .camp_Name = c.camp_Name, _
        .res_CreationDate = r.res_CreationDate, _
        .pay_Name = p.pay_Name, _
        .sta_Id = r.sta_Id, .camp_Id = c.camp_Id, .res_StartDate = r.res_StartDate, _
        .res_EndDate = r.res_EndDate, .zon_Id = z.zon_Id}

Session("datosGridView") = res
GridView_ZC.DataSource = Session("datosGridView")
GridView_ZC.DataBind()

Ответы [ 2 ]

0 голосов
/ 26 февраля 2011

Проверьте это: http://www.seila.gov.kh/eang/ASPNET2.0/Web_2.0_With_ASP_NET_3.5.pdf Там несколько глав об оптимизации и производительности, я вспоминаю, что читал кое-что об элементах управления gridview.

0 голосов
/ 26 февраля 2011

Нумерация страниц должна обрабатываться элементом управления источником данных.Если вы используете элемент управления LinqDataSource, тогда он должен выполнять нумерацию страниц с помощью AutoPage="true" AFAIK.

Редактировать

Ваш источник данных не имеет нумерации страниц, поэтому вседанные должны быть переданы в GridView, прежде чем GridView сможет разбить их на страницы.Ваш запрос LINQ-to-SQL возвращает все записи.

Вы хотите использовать «умный» источник данных, например, элемент управления LinqDataSource.Самый простой способ - объявить LinqDataSource, привязать GridView к источнику данных в разметке, а затем переопределить событие Selecting LinqDataSource, чтобы указать собственную логику извлечения данных:

<asp:LinqDataSource ID="MyDataSource" runat="server"
    OnSelecting="MyDataSource_Selecting" AutoPage="true" AutoSort="true">
</asp:LinqDataSource>

<asp:GridView ID="MyGridView" DataSourceID="MyDataSource" ... >

Код-за:

Protected Sub MyDataSource_Selecting(sender As Object, _
        e As LinqDataSourceSelectingEventArgs)

    Dim dataContext As New MyDataContext
    e.Result = ' Put LINQ-to-SQL code here

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...