【问题标题】:How do I make my asp.net gridview able to sort?如何使我的 asp.net gridview 能够排序?
【发布时间】:2014-09-16 12:40:18
【问题描述】:

好的,这是我已经研究了几个小时的大问题。

我得到了我的 gridview,我得到了一个始终保持在顶部的标题,我使用 jQuery 作为标题,我得到的顶部总是不会从 gridview 获取超链接允许排序。

我知道我可以通过添加:ORDER BY ColumnName 对 gridview 进行排序。但我不知道如何创建单击事件或如何显示箭头(如果可能),以便您查看它是升序还是降序。此外,如果您单击它,它将从升序/降序变化

到目前为止我的代码:

Side.aspx

            <div id="GHead"></div>
            <div style="overflow: auto; height: 100%">
                <asp:GridView ID="GridView1" runat="server" AllowSorting="true" AutoGenerateColumns="false" BackColor="White" Width="100%" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" AutoGenerateSelectButton="true" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
                    <Columns>
                        <asp:BoundField HeaderText="ID" DataField="ID" />
                        <asp:BoundField HeaderText="Tildelt" DataField="Tildelt" />
                        <asp:BoundField HeaderText="Firma" DataField="Firma" />
                        <asp:BoundField HeaderText="Kontakt" DataField="Kontakt" />
                        <asp:BoundField HeaderText="Svar" DataField="Svar" />
                        <asp:BoundField HeaderText="Emne" DataField="Emne" />
                        <asp:BoundField HeaderText="Due Date" DataField="DueDate" />
                        <asp:BoundField HeaderText="Prioritet" DataField="Prioritet" />
                        <asp:BoundField HeaderText="Status" DataField="Status" />
                        <asp:BoundField HeaderText="Lukke Dato" DataField="Lukke Dato" />
                    </Columns>
                    <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
                    <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" />
                    <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
                    <RowStyle BackColor="White" ForeColor="#330099" />
                    <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
                    <SortedAscendingCellStyle BackColor="#FEFCEB" />
                    <SortedAscendingHeaderStyle BackColor="#AF0101" />
                    <SortedDescendingCellStyle BackColor="#F6F0C0" />
                    <SortedDescendingHeaderStyle BackColor="#7E0000" />
                </asp:GridView>
            </div>

jQuery 代码

<script src="../Scripts/jquery-1.7.1.js"></script>
<script lang="ja">
    $(document).ready(function () {
        var gridHeader = $('#<%=GridView1.ClientID%>').clone(true); //clone copy of gridview with style
        $(gridHeader).find("tr:gt(0)").remove(); // removes all rows except first row
        $('#<%=GridView1.ClientID%> tr th').each(function (i) {
            //sets width of each th from gridview
            $("th:nth-child("+(i+1)+")",gridHeader).css('width', ($(this).width() + 1).toString() + "px");
        });
        $("#GHead").append(gridHeader);
        $('#GHead').css('position', 'absolute');
        $('#GHead').css('top', $("#<%=GridView1.ClientID%>").offset().top);

    });
</script>

我从网上得到了所有的 jQuery。

这就是它现在的样子。

【问题讨论】:

  • 为什么不用gridview的内置排序事件呢?
  • 你的意思是 AllowSorting="true"?因为我试过了,但由于 jquary 代码没有发生任何事情,所以即使向下滚动,如果它不是你提到的,它也会保持在顶部,你能举个例子吗?
  • 不,他的意思是您需要添加 gridview onsorting 事件并在服务器端进行排序。
  • Microsoft 建议您不要使用您使用的语法来设置控件的样式。相反,您应该使用 CSS。当您使用它时,为什么不考虑将 GridView 替换为中继器,然后使用像 DataTables 这样具有出色排序、过滤和样式的内置工具?
  • 好吧,如果我可以让我的标题可点击并运行一个 sql quary,我就可以在那里完成我的排序。如果我去中继器,我看到我可以将表格项目变成超链接等等,但是,标题不会再次停留在顶部,所以基本上它会遇到与我最初遇到的问题相同的问题。一切都很好,但是想要该程序的公司说标题应该始终位于顶部,这就是 jquary 进入的原因。

标签: c# asp.net sorting gridview


【解决方案1】:

使用AllowSorting 属性做你想做的事,当框架有标准功能时不要使用第三方工具,如jQuery。

例如:

<asp:GridView ID="SomeGridView" AutoGenerateColumns="False" runat="server" Width="100%" AllowPaging="True"
    PageSize="50" AllowSorting="True" OnPageIndexChanging="SomeGridView_OnPageIndexChanging"
    OnSorting="SomeGridView_OnSorting" OnRowDataBound="SomeGridView_OnRowDataBound">

【讨论】:

  • 根本没有帮助我...我想要的不是将滚动网格更改为分页网格
  • 好像只看到了图片和代码,不想看问题出在哪里。如果您查看我的代码,我允许排序并且它不会工作因为 JQuary 并且我需要 JQuary 始终将标题保持在顶部,除非有人可以在那里提出一个很好的解决方案。允许排序不会转移到 JQuary
【解决方案2】:

好的,我找到了如何使它们可点击的解决方案。因为它们不是自动生成的,所以我需要为每个边界字段输入 SortExpression。

自己没有发现我找到this Link他和我一样有问题并有答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 2011-09-02
    相关资源
    最近更新 更多