我有一个ASP.NET web应用程序,我从数据库中提取一些数据,并在用户下拉列表选择时将其绑定到网格视图。网格视图包含(其中)一个复选框列。我想实现网格视图排序,但使用AllowSorting和OnSorting的问题是它会回发,并且我丢失了复选框选择。
所以我决定研究客户端排序和jquery tableSort。我正在尝试实现它,但它没有对任何东西进行排序。
我在标题中添加了指向jquery脚本的先决条件
现在我需要添加
$(document).ready(function()
{
$("#myTable").tablesorter();
}
); 我已经这样做了(用我的gridview id替换myTable ),但它没有对任何东西进行排序。会不会是因为我没有在PageLoad中绑定数据?我在另一个函数中这样做,因为我在等待用户选择。
然后我发现它需要渲染THEAD和TBODY。因此,在将数据绑定到网格视图之后,我添加了以下内容:
onlineSearchGridView.UseAccessibleHeader = true;//我读到默认情况下是真的,并不真正需要它onlineSearchGridView.HeaderRow.TableSection = TableRowSection.TableHeader;
说了这么多,我该怎么做才能让网格视图排序呢?我不明白当我点击一个标题列时,表排序是怎么知道的?没有链接、按钮或其他任何东西。事件是如何被检测的?我的猜测是它没有排序,因为我指定tablesorter的函数没有到达,或者在网格视图中有任何标题之前,它被调用得太早了?
更新:
这是我的网格视图:
<asp:GridView ID="OnlineSearchGridView" runat="server" Visible="false" AutoGenerateColumns="true" OnRowDataBound="OnlineSearchGridView_RowDataBound" Height="50px" CellPadding="5" Font-Names="Arial" Font-Size="9pt">这是我的表排序函数:
$(document).ready(function () {
$("OnlineSearchGridView").tablesorter({debug: true});});
我需要把#放在我的表id之前吗?
此网格视图位于登录视图内。这会是一个问题吗?我注意到,当这个表被呈现时,它有一个类似LoginView1_OnlineSearchGrid的id。我需要在tablesort函数中更改id吗?如果所有这些都是正确的,但仍然不起作用,我认为这是因为当页面加载时调用了document.ready函数,并且我在某个用户选择之后将数据绑定到数据表中。我是否应该将其更改为仅使用tblSort()函数或其他函数,并在该下拉列表的OnChanged事件中调用它?
发布于 2017-07-11 14:51:52
设法解决了这个问题。它实际上很简单,但我以前没有使用过jquery。我解决这个问题的方法是使用以下代码:
<script>
$(document).ready(function () {
$("table").tablesorter();
});
</script> 所以我必须使用"table“而不是gridview id。我发现这很有帮助:http://www.c-sharpcorner.com/blogs/sorting-in-gridview-using-tablesorterjs-in-asp-net
现在我需要担心整个事情的定制和样式,但至少它是排序的,所以我很高兴。
谢谢!
https://stackoverflow.com/questions/45013470
复制相似问题