Я ищу, чтобы создать GridView с пейджингом, но пейджинг по-прежнему разрешен. Затем я хотел бы создать свои собственные кнопки подкачки, внешние GridView, и иметь эти страницы через данные. По сути, это создание прокручиваемого gridview с липким пейджером внизу, который я могу настроить, чтобы соответствовать внешнему виду, ощущению и функциональности, требуемым на моем сайте. Кто-нибудь есть идеи о том, как это сделать? Я не нашел много в моем поиске.GridView External Paging
ответ
Вы можете использовать ретранслятор с пользовательским поисковым вызовом или определить свой собственный пользовательский элемент управления для этого требования. Проверьте this article о том, как это сделать с помощью регулятора ретранслятора. Update: This может помочь
Я знаю, этот вопрос был дан ответ, и это действительно стара, но у меня было много проблем с этим и не нашли принятый ответ полностью полезен, главным образом потому, что я не хотел создавать новый элемент управления.
Я нашел, что вы можете сделать это довольно легко на самом деле, и вот как.
Я создал свое gridview внутри обновленной панели. Я загружаю данные для сетки нажатием кнопки Я не показываю, а затем помещаю объект данных в viewstate. Затем я добавляю pagerSetting как таковой:
<PagerSettings Mode="NextPreviousFirstLast" Visible="false" />
Затем я добавил 4 кнопки, метку и текстовое поле в DIV, который я выбрал, чтобы выставить на сервер:
<div runat="server" id="divPageControls" style="width:100%;margin-bottom:1%;margin-top:1%;display:none;">
<asp:Button runat="server" ID="btnFirst" Text="First" CssClass="ReOrderButtons" UseSubmitBehavior="false" />
<asp:Button runat="server" ID="btnPrev" Text="Previous" CssClass="ReOrderButtons" UseSubmitBehavior="false" />
<asp:Button runat="server" ID="btnNext" Text="Next" CssClass="ReOrderButtons" UseSubmitBehavior="false" />
<asp:Button runat="server" ID="btnLast" Text="Last" CssClass="ReOrderButtons" UseSubmitBehavior="false" /> <br /><br />
<asp:TextBox runat="server" ID="txtPageIndex" AutoPostBack="true" CssClass="priceQuote_TextBoxStyle" style="margin-left:20px;float:none;width:4%;text-align:center;" ></asp:TextBox> <asp:Label runat="server" ID="lblOfPages"></asp:Label>
</div>
Теперь все было в место, все, что мне нужно было сделать, это добавить обработчики событий.
Protected Sub btnFirst_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnFirst.Click
_mainView.PageIndex = 0
_mainView_PageIndexChanging(_mainView, New System.Web.UI.WebControls.GridViewPageEventArgs(_mainView.PageIndex))
End Sub
Protected Sub btnLast_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLast.Click
_mainView.PageIndex = _mainView.PageCount - 1
_mainView_PageIndexChanging(_mainView, New System.Web.UI.WebControls.GridViewPageEventArgs(_mainView.PageIndex))
End Sub
Protected Sub btnPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrev.Click
_mainView.PageIndex -= 1
_mainView_PageIndexChanging(_mainView, New System.Web.UI.WebControls.GridViewPageEventArgs(_mainView.PageIndex))
End Sub
Protected Sub btnNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNext.Click
_mainView.PageIndex += 1
_mainView_PageIndexChanging(_mainView, New System.Web.UI.WebControls.GridViewPageEventArgs(_mainView.PageIndex))
End Sub
Protected Sub txtPageIndex_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtPageIndex.TextChanged
If fromInternal = False Then
If txtPageIndex.Text <> "" And IsNumeric(txtPageIndex.Text) Then
If CInt(txtPageIndex.Text - 1) < _mainView.PageCount - 1 And CInt(txtPageIndex.Text - 1) >= 0 Then
_mainView.PageIndex = CInt(txtPageIndex.Text - 1)
_mainView_PageIndexChanging(_mainView, New System.Web.UI.WebControls.GridViewPageEventArgs(_mainView.PageIndex))
End If
End If
End If
End Sub
Protected Sub _mainView_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles _mainView.PageIndexChanging
_mainView.PageIndex = e.NewPageIndex
_mainView.DataSource = ViewState("currProducts")
_mainView.DataBind()
End Sub
Protected Sub _mainView_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles _mainView.DataBound
If _mainView.PageCount > 1 Then
divPageControls.Style("display") = "block"
If _mainView.PageIndex = 0 Then
btnFirst.Style("display") = "none"
btnPrev.Style("display") = "none"
btnLast.Style("display") = "inline"
btnNext.Style("display") = "inline"
ElseIf _mainView.PageIndex > 0 And _mainView.PageIndex < _mainView.PageCount - 1 Then
btnFirst.Style("display") = "inline"
btnPrev.Style("display") = "inline"
btnLast.Style("display") = "inline"
btnNext.Style("display") = "inline"
ElseIf _mainView.PageIndex = _mainView.PageCount - 1 Then
btnLast.Style("display") = "none"
btnNext.Style("display") = "none"
btnFirst.Style("display") = "inline"
btnPrev.Style("display") = "inline"
End If
fromInternal = True
txtPageIndex.Text = CStr(_mainView.PageIndex + 1)
lblOfPages.Text = "of " & CStr(_mainView.PageCount - 1)
End If
End Sub
После всего, что при нажатии на кнопки индекс странице girdview был изменен, а затем передается в PageIndexChanging случае представления. Это прекрасно работает для меня, и я надеюсь, что кто-то другой сможет его использовать.
Помните, что я не показывал триггеры асинхронизации панели обновления или любые другие нюансы, однако я не думаю, что они необходимы для подкачки, если вы не используете панель обновления, такую как я.
- 1. Paging Gridview
- 2. Paging GridView
- 3. paging gridview
- 4. gridview paging
- 5. ASP.NET webforms - gridview paging
- 6. asp.net gridview paging
- 7. GridView Paging Выпуск
- 8. GridView Paging внутри ретранслятора
- 9. руководство gridview paging
- 10. GridView paging in C#
- 11. GridView: Paging против VerticalScrollBar
- 12. GridView Databinding и Paging
- 13. asp.net gridview paging
- 14. gridview paging problem
- 15. Gridview Paging с JQuery
- 16. Paging/Сортировка по GridView
- 17. ASP.NET Gridview Paging Issue
- 18. Asp.Net MVC: GridView Paging Issue
- 19. ASP.NET GridView Paging с IQueryable
- 20. Реализация Gridview paging в asp.net 2008
- 21. Gridview paging с использованием linq в asp.net
- 22. Как хранить данные в gridview paging
- 23. GridView Большой список по алфавиту Paging
- 24. ASP.Net Gridview paging, pageindex always == 0
- 25. ASP.net Gridview Paging не работает внутри UpdatePanel
- 26. GridView с отзывчивыми плагинами FooTable с paging
- 27. Экспорт GridView в XLS --- Paging Issue
- 28. gridview search and paging in C#
- 29. ASP.NET GridView Paging с привязкой данных
- 30. NHibernate paging и привязка к Gridview
Я бы предпочел использовать предварительно упакованные функции с помощью GridView, так как это выглядит довольно быстро. Возможно ли это сделать/я ошибаюсь в отношении производительности? – steventnorris
Repeater - широко используемый элемент управления. О какой производительности вы имеете в виду? Производительность будет сильно зависеть от вашего запроса к базе данных (сколько записей вы извлекаете), или вы имеете в виду клиент мудрый? (обновил мой ответ с помощью пользовательского пейджинга для gridview), хотя для этого может потребоваться много работы. –
Возможно, это поможет прояснить, что я ищу. Мне нужна сортировка по всему набору данных, разбивке на страницы и скорости отображения данных (может быть и большой набор данных, возможно, несколько 1000 записей). Заголовок/сортировка и нижний колонтитул/разбивка на страницы должны быть «липкими» относительно таблицы данных центра, которая будет прокручиваться. Я рассматривал кешированный ответ вместо SQL-тяги на каждой странице/сортировке, и я считаю, что GridView обрабатывает. Кроме того, GridView обрабатывает другие функции, кроме липкой головки/ноги. Имеет ли репитер эти функции? – steventnorris