首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RadGrid滤波

RadGrid滤波
EN

Stack Overflow用户
提问于 2016-04-29 20:44:59
回答 1查看 1.2K关注 0票数 0

有人知道如何从radGrid中删除某些过滤器吗?我有股票,他们不同的数据类型,但我不需要他们所有的,只有3或4个。我使用了gridfiltermenu,但这可以去掉每个列中的某个过滤器。I:我需要等号在一列,而不是在另一列。我已经试过很多种方法来解决这个问题了。这是我所拥有的-原谅我的混乱。Im在后端有数据库,所以我没有把它们作为单独的列放在前面。我试着逐列获取列名,但是gridfilteringitem和其他方法不接受名称作为参数。

代码语言:javascript
复制
<telerik:RadGrid ID="gvPIOList" runat="server" 
        Class="display table table-bordered table-hover table-responsive text-center"
        CellPadding="2" HorizontalAlign="Center" AllowPaging="True"
        AllowSorting="True" GroupPanelPosition="Top" Skin="Outlook"
        ShowFooter="True" OnNeedDataSource="gvPIOList_NeedDataSource"
        MasterTableView-RowIndicatorColumn-Visible="false" 
        HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center"
        AlternatingItemStyle-HorizontalAlign="Center" AllowFilteringByColumn="true"
        MasterTableView-EditFormSettings-EditColumn-FilterListOptions="VaryByDataTypeAllowCustom"
        MasterTableView-EditFormSettings-EditColumn-ShowFilterIcon="false"
        MasterTableView-EditFormSettings-EditColumn-AndCurrentFilterFunction="Contains"
        OnColumnCreated="gvPIOList_ColumnCreated" OnInit="gvPIOList_Init"
        OnItemCreated="gvPIOList_ItemCreated">
            <MasterTableView GroupLoadMode="Server" 
                EditFormSettings-EditColumn-AutoPostBackOnFilter="true"
                EditFormSettings-EditColumn-FilterDelay="1000"
                AllowFilteringByColumn="true"
                EditFormSettings-EditColumn-FilterListOptions="VaryByDataTypeAllowCustom"
                EditFormSettings-EditColumn-ShowFilterIcon="false">
            </MasterTableView>
</telerik:RadGrid>

以下是代码:

代码语言:javascript
复制
protected void gvPIOList_Init(object sender, EventArgs e)
{
    GridFilterMenu menu = gvPIOList.FilterMenu;
    int i = 0;
    while (i < menu.Items.Count)
    {
        if (menu.Items[i].Text == "NoFilter" || menu.Items[i].Text == "Contains" || menu.Items[i].Text == "Equals" || menu.Items[i].Text == "StartsWith")
        {
            i++;
        }
        else
        {
            menu.Items.RemoveAt(i);
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-11 20:00:00

这是我使用的代码:

它适用于不同的数据类型,您可以用列的名称替换column.get_dataType() == "Sytem.Int64"

编写要保存在in { 'NoFilter': '', 'Contains': '' }部分中的值。

在RadGrid的客户端设置部分中调用此函数:

aspx:

代码语言:javascript
复制
<ClientSettings EnableRowHoverStyle="true">
    <ClientEvents OnFilterMenuShowing="filterMenuShowing" />
</ClientSettings>
<FilterMenu OnClientShowing="MenuShowing" />

.js (可以直接放置在aspx中):

代码语言:javascript
复制
var column = null;
function MenuShowing(sender, args)
{
if (column == null) return;
var menu = sender; var items = menu.get_items();
if (column.get_dataType() == "System.String")
{
    var i = 0;
    while (i < items.get_count())
    {
        if (!(items.getItem(i).get_value() in { 'NoFilter': '', 'Contains': '' }))
        {
            var item = items.getItem(i);
            if (item != null)
            {
                item.set_visible(false);
            }
        }
        else
        {
            var item = items.getItem(i);
            if (item != null)
            {
                item.set_visible(true);
            }
        }
        i++;
    }
}
if (column.get_dataType() == "System.Int64")
{
    var j = 0; while (j < items.get_count())
    {
        if (!(items.getItem(j).get_value() in { 'NoFilter': '', 'EqualTo': '' }))
        {
            var item = items.getItem(j); if (item != null)
                item.set_visible(false);
        }
        else
        {
            var item = items.getItem(j); if (item != null) item.set_visible(true);
        }
        j++;
    }
}
column = null;
menu.repaint();
}
function filterMenuShowing(sender, eventArgs)
{
    column = eventArgs.get_column();
}

这摘自Telerik的网站:筛选菜单显示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36947146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档