ASP.NET MVC GridView 在单击按钮时按文本框中的值过滤? (开发快车)

ASP.NET MVC GridView filtering by value from textbox on button click? (DevExpress)

总结:我想在文本框中输入文本,按下按钮,GridView 应该显示减少的内容——按值过滤。

详细信息: 作为 DevExpress APS.NET MVC 5 初学者,我有一个使用 GridView 的简单演示应用程序。第一个示例使用带有筛选行的 Gridview —— DevExpress (14.2) GridView 向导生成的所有内容。

当在列过滤器中输入一些值时,显示的内容会在一段时间后减少:

我需要实施替代方案,我将值输入到文本框,GridView 内容仅在按下“应用”按钮后更新:

视图定义如下:

@{
    ViewBag.Title = "GridView filtering";
}

<h2>@ViewBag.Title</h2>

@Html.DevExpress().Label(settings =>
{
    settings.Name = "Label";
    settings.Text = "Filter for the Name column";
}).GetHtml()

@Html.DevExpress().TextBox(settings =>
{
    settings.Name = "TextBox";
}).GetHtml()

@Html.DevExpress().Button(settings =>
{
    settings.Name = "BtnApply";
    settings.Text = "Apply";
    settings.UseSubmitBehavior = true;
}).GetHtml()


@Html.Action("GridViewPartial")

我不知道如何将按钮单击绑定到功能、如何获取文本框内容以及如何将其传递给 GridView 并使其更新。

在这种情况下,应用按钮不应执行提交。将其 UseSubmitBehavior 属性 设置为 False。处理按钮的客户端 Click event. To access it in mark-up, use ButtonSettings.ClientSideEvents:

@Html.DevExpress().Button(settings =>
{
    settings.Name = "BtnApply";
    settings.Text = "Apply";
    settings.UseSubmitBehavior = false;
    settings.ClientSideEvents.Click = "btnApplyClick";
}).GetHtml()

在 btnApplyClick JS 函数中,使用 TextBox 的客户端 GetText method to get the text typed in your TextBox. Then, use the Grid's client-side AutoFilterByColumn 通过名称列将过滤器应用到网格:

<script type="text/javascript">
    function btnApplyClick(s, e) {
        var filter = TextBox.GetText();
        GridView.AutoFilterByColumn("Name", filter);
    }
</script>

其中 "GridView" 是您的 GridView 扩展的名称。