JqG​​rid对href标签进行排序而不是内容

时间:2011-03-28 17:12:22

标签: c# jquery asp.net jquery-ui jqgrid

我目前正在尝试使用jqGrid插件。一切都运行良好,期望在特定列上进行排序。

我有一个现有的表,我正在尝试将插件应用到。

<script type="text/javascript">
    $(document).ready(function () {
        tableToGrid("#myTable", {})
    });
</script>

<table id="myTable">
    <thead>
        <tr>
            <th>
                Web Site
            </th>
        </tr>
    </thead>
<tbody>
        <tr>
            <td>
                <a href="http://www.jsmith.com/4093">Hello</a>
            </td>
        </tr>
        <tr>
            <td>
                <a href="http://www.jsmith.com/4094">Bob</a>
            </td>
        </tr>
        <tr>
            <td>
                <a href="http://www.jsmith.com/4093">Loblaws</a>
            </td>
        </tr>
        <tr>
            <td>
                <a href="http://www.jsmith.com/4093">Wahoo</a>
            </td>
        </tr>
    </tbody>
</table>

当我对列进行排序时,订单显示为

你好,Loblaws,Wahoo,Bob

而不是

鲍勃,你好,Loblaws,Wahoo

看起来它正在排序href标签而不是内容。

非常类似于此问题(只是一个不同的插件) - Table sorter issue with content

3 个答案:

答案 0 :(得分:1)

您可以使用自定义格式化程序custom_formatter。如果在jqgrid中根据href内容进行排序,它会帮助您,我觉得这是不可能的。

或者,您可以再传递一个包含href内容的列,并根据此对href列进行排序,但不是首选。

答案 1 :(得分:1)

你有这么奇怪的排序的原因在于你当前如何使用jqGrid,你创建了一个带有字符串数据列的网格。字符串数据将是:

"\n                <a href=\"http://www.jsmith.com/4093\">Hello</a>\n            "
"\n                <a href=\"http://www.jsmith.com/4094\">Bob</a>\n            "
"\n                <a href=\"http://www.jsmith.com/4093\">Loblaws</a>\n            "
"\n                <a href=\"http://www.jsmith.com/4093\">Wahoo</a>\n            "

如何看到包含“Bob”子字符串的字符串之前有“4094”。所以字符串将是排序顺序中的最后一个字符串。

您可以使用options的第二个tableToGrid参数来改善这种情况,但最好的方法是明确分隔信息关于显示在来自url数据的列(如“Bob”,“Hello”)等。然后列上的排序将完全符合您的要求。因此,最好不要对数据使用tableToGrid函数,并以直接方式创建jqGrid。

因为我不知道您从哪个来源获得有关文本网址的信息,所以很难为您提供最佳实施建议。您可以找到如何在jqGrid herehere中构建链接的示例。我认为你可以轻松修改这些例子。

答案 2 :(得分:0)

table To Grid不会对您的表进行排序,它只会将您的表转换为网格。 对于客户端排序,这可能对您有所帮助。 jqGrid sorting on client side