MVC3 webgrid过滤建议?

时间:2011-12-05 00:56:03

标签: asp.net asp.net-mvc asp.net-mvc-3 jquery

我正在尝试找出将过滤应用到我在Main / Index视图(MVC3)中显示的webgrid的最佳方法(最小的努力)。

我添加了一个允许按某列过滤的多小节点,我希望每个选择项捕获click事件(我已经实现并正在工作),然后以某种方式重新调用包含所有项的Index()方法根据是否从过滤器调用来重建视图的代码(多选)。

最好的方法是什么?我知道这是一个广泛的问题,但任何信息将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以将多选项放在表单中。然后您有两种可能性来提交此表单:

  1. 使用提交按钮
  2. 使用multiselect的onchange事件(在这种情况下,您将不得不使用javascript)
  3. 第一点很简单:

    @using (Html.BeginForm())
    {
        @Html.ListBoxFor(x => x.SelectedItems, Model.Items)
        <button type="submit">Filter</button>
    }
    

    要实现第二个,您可以使用jQuery并订阅multiselect的change事件。首先,让我们给这个multiselect一个id,以便我们可以更容易地选择它:

    @using (Html.BeginForm())
    {
        @Html.ListBoxFor(x => x.SelectedItems, Model.Items, new { id = "filter" })
    }
    

    然后在单独的javascript文件中:

    $(function() {
        $('#filter').change(function() {
            // when the selection changes we manually trigger the submission
            // of the containing form
            $(this).closest('form').submit();
        });
    });
    

    在这两种情况下,我们提交的控制器操作将采用一个字符串数组作为参数,它将表示多选中将用于过滤结果集的选定值。