我正在寻找创建一个隐藏分页的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