【发布时间】: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