我正在尋找創建一個隱藏分頁的GridView,但仍然允許分頁。然後,我想在GridView的外部創建自己的分頁按鈕,並通過數據創建這些頁面。本質上,這是創建一個可滾動的gridview,在底部有一個粘性尋呼機,我可以自定義以適應我網站所需的外觀,感覺和功能。有沒有人有任何想法如何做到這一點?我在搜索中找不到多少東西。GridView外部尋呼
0
A
回答
2
您可以使用具有自定義分頁功能的中繼器或爲此需求定義您自己的用戶控制。有關如何使用中繼器控件執行此操作,請參閱 this article。 更新: This可能有助於
2
我知道這個問題得到回答,現在是真的老了,但我是有這個有很多的麻煩,也沒找到接受的答案完全有幫助,主要是因爲我不想創建一個新的控制。
我發現你可以很容易地做到這一點,這裏是如何。
我在updatepanel內部創建了我的gridview。我加載網格的數據按鈕單擊我沒有顯示,然後將數據對象放入視圖狀態。然後,我添加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. 尋呼在GridView控件
- 2. 尋呼與GridView和LINQ到SQL
- 3. 標準化gridView尋呼機模板
- 4. 強制ASP.NET GridView的尋呼機顯示
- 5. 在GridView中尋呼不顯示
- 6. 強制Rad GridView的尋呼機顯示
- 7. 在gridview中尋呼網絡表單
- 8. 尋呼
- 9. Telerik的網尋呼和使用外部數據源
- 10. 的ObjectDataSource尋呼和額外的參數
- 11. PHP呼出/外部鏈接
- 12. 外部電話呼叫
- 13. 騾呼叫外部系統
- 14. MVC2 .NET - 尋呼
- 15. Hibernate尋呼
- 16. PHP尋呼MYSQL_QUERY
- 17. 尋呼MS SQL
- 18. jQuery表尋呼
- 19. 尋呼的ObjectDataSource
- 20. 尋呼與PHP
- 21. 在Rediis尋呼
- 22. SqlDataSource的尋呼
- 23. CodeIgniter尋呼404
- 24. PHP樹尋呼
- 25. 尋呼javascript
- 26. 尋呼與PagedList
- 27. 如何結合gridview的,以允許尋呼時通過在asp.net
- 28. 動態數據的GridView尋呼機缺少DynamicHyperlink編輯參數
- 29. 在Gridview中尋呼,無法訪問另一個頁面
- 30. GridView尋呼機頁面按鈕的可訪問性
我寧願在GridView中使用預先打包的功能,因爲它看起來性能很好。是否有可能做到這一點/我的表現錯了嗎? – steventnorris 2012-03-02 14:44:12
中繼器是一個廣泛使用的控制。你指的是什麼表現?性能將很大程度上取決於您的數據庫查詢(您獲取多少條記錄)或您的客戶是否明智? (更新我的答案與GridView自定義分頁),雖然它可能需要很多工作。 – 2012-03-02 14:45:55
也許這將有助於澄清我在找什麼。我需要對整個數據集,分頁和數據顯示速度進行排序(也可能是一個大型數據集,可能還有幾千條記錄)。標題/排序和頁腳/分頁需要相對於將滾動的中心數據表「粘」。我正在考慮一個緩存響應,而不是每個頁面/排序上的SQL拉,我相信這是GridView處理的。另外,GridView處理除粘性頭部/腳之外的其他功能。中繼器是否也提供這些功能? – steventnorris 2012-03-02 15:38:39