将焦点设置为Infragistics WebDataGrid中的列过滤器

时间:2014-07-29 14:31:16

标签: infragistics webdatagrid

我正在使用带有过滤集的Infragistics NetAdvantage WebDataGrid。

在页面加载时,我想打开第一个过滤器的文本框,并在那里设置焦点,以便用户可以开始键入要过滤的文本。

enter image description here

我在网上看到了如何为jQuery网格执行此操作的示例,但不是WebDataGrid

我想要的是:

         myWebDataGrid.Behaviors.Filtering.ColumnFilters[2].RuleTextNode.focus; 

我使用的是Infragistics35.Web.v11.2,Version = 11.2.20112.2025

1 个答案:

答案 0 :(得分:1)

要执行此操作,您可以在页面加载时调用过滤器行上的enterEditMode,并传入要编辑的特定单元格:

function enterEditFilter() {
    var grid = $find('<%= grid.ClientID %>');
    var filtering = grid.get_behaviors().get_filtering();
    var filterRow = filtering._row;
    var cell = filterRow.get_cellByColumnKey('Text');

    filtering.enterEditMode(cell);
}

请注意,要执行此操作,您必须能够访问过滤器行。似乎没有办法通过公共API访问它,所以我使用私有变量_row。这不是推荐的方法,因为该变量可能会发生变化,因此我建议您提交新的产品创意,以便将过滤器行添加到公共API中。您可以在以下页面执行此操作:

http://ideas.infragistics.com/

需要注意的另一件事是默认过滤器类型为“全部”,因此您还需要更改此设置。您可以通过处理客户端过滤事件并在那里设置规则来执行此操作:

function grid_filtering(sender, eventArgs) {
    var filters = eventArgs.get_columnFilters();

    for (var i = 0; i < filters.length; i++) {
        var condition = filters[i].get_condition();
        if (condition.get_rule() === 0) {
            var columnType = filters[i].get_columnType();
            if (columnType == 'string') {
                condition.set_rule($IG.TextFilterRules.Equals);
            }
            else if (columnType == 'number') {
                condition.set_rule($IG.NumericFilterRules.Equals);
            }
        }
    }
}