2017-10-13 56 views
0

如何使用asp.net对表进行排序/过滤?我不确定如何去做,我必须使用jQuery。研究,但我没有看到如何处理这个问题。在asp.net中排序表mvc

<table> 
     <tr> 
      <th class="col-lg-3 tablehead">Expense Account</th> 
      <th class="col-lg-3 tablehead">Description</th> 
      <th class="col-lg-3 tablehead">Requisition Number</th> 
      <th class="col-lg-3 tablehead">Item Number</th> 

     </tr> 
     @for (int i = 0; i < Model.Count; i++) 
     { 

      <tr> 
       <td>@Html.CheckBoxFor(m => m[i].postTrnx)</td> 
       @* <td class="label">@Html.DisplayFor(m => m[i].requisitionNumber) </td>*@ 
       @*<td class="label">@Html.DisplayFor(m => m[i].transactionDate)</td>*@ 


      </tr> 
      foreach (var item in Model[i].items) 
      { 
       @Html.HiddenFor(m => item.description) 
       @Html.HiddenFor(m => item.expense_account) 
       @Html.HiddenFor(m => item.itemNumber) 
       <tr> 
        <td class="col-lg-3 tabledata">@item.expense_account.account_desc</td> 
        <td class="col-lg-3 tabledata">@item.description</td> 
        <td class="label">@Html.DisplayFor(m => m[i].requisitionNumber) </td> 
        <td class="col-lg-3 tabledata">@item.itemNumber</td> 
        <td class="col-sm-1 tabledata">@item.quantity</td> 
        <td class="col-sm-1 tabledata">@item.selecteduomtext </td> 
        <td class="col-sm-1 tabledata">@item.price</td> 
        <td class="col-sm-1 tabledata">@item.extended_cost</td> 
        <td class="label">@Html.DisplayFor(m => m[i].transactionDate)</td> 
        <td>@Html.ActionLink("Edit", "Edit", new { id = @item.lineNum, name = Model[i].docNumber })</td> 
       </tr> 

} 
      } 

    </table> 
+0

你想在页面加载时进行默认排序吗?或者你希望用户能够在页面加载后动态排序?或两者? – mason

+0

您可以使用DataTables https://datatables.net/。默认配置支持过滤和排序。 这是客户端,但很好。 – Waragi

+1

@Waragi他使用Bootstrap来判断类。 [FooTable](HTTP://fooplugins.github。io/FooTable /)比使用Bootstrap的DataTable更好。 – mason

回答

0

要让用户对html表进行排序,您可以使用JQuery插件。由于我到目前为止只使用了数据表,我会给你一个例子。有关安装说明,请参阅official website。使用非常简单,只需拨打电话

<script>$('table').DataTable();</script> 

在html文件的末尾。

确保按照文档中的说明包含DataTable插件。

+0

用筛选器显示一个示例 –

+0

我看不到它正在排序 –

+0

您能描述当您说“排序”时您期望的行为吗?你想要什么输出? – Wndrr

0

既然你希望用户能够通过单击,您可以使用DataTables.net列对表进行排序,正如其他人建议,或者你可以自己用下面的一般步骤做:

  • 添加客户端将javascript事件添加到要排序的每个列标题元素中,这将调用相应的控制器操作。

  • 添加服务器端控制器操作事件以处理对服务器上的数据进行排序。

  • 在click事件中,执行ajax局部页面回调以调用服务器端操作事件。

  • 在控制器操作事件中根据需要对数据进行排序。

  • 在客户端ajax响应更新/加载新的表格元素。

  • 跟踪每列的当前排序顺序。

这可能更容易使用DataTables.net因为自己做这可能需要更多的研究。

一些链接,以帮助:

+0

我们不要回答太宽泛的问题。 – mason