代码之家  ›  专栏  ›  技术社区  ›  pepr

ASP.NET MVC GridView是否按按钮单击时文本框中的值进行筛选?(DevExpress)

  •  0
  • pepr  · 技术社区  · 9 年前

    摘要: 我想在文本框中输入一个文本,按下按钮,GridView将显示缩减的内容——按值过滤。

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

    Initial state of the gridview

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

    Filtered content

    我需要实现另一种方法,即在文本框中输入值,只有在按下“应用”按钮后才能更新GridView内容:

    I want filtering after pressing the Apply button

    视图定义如下:

    @{
        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并使其更新。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Gosha_Fighten    9 年前

    在这种情况下,应用按钮不应执行提交。将其UseSubmitBehavior属性设置为False。处理按钮的客户端 Click 事件要在标记中访问它,请使用 ButtonSettings.ClientSideEvents :

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

    在btnApplyClickJS函数中,使用TextBox的clien side GetText 方法获取在TextBox中键入的文本。然后,使用网格的客户端 AutoFilterByColumn 要按“名称”列将过滤器应用于网格,请执行以下操作:

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

    其中“GridView”是GridView扩展的名称。