Asp.net 生成自定义Telerik RadFilter查询

Asp.net 生成自定义Telerik RadFilter查询,asp.net,telerik,Asp.net,Telerik,好的,我今天的任务之一是修改客户网站上现有的Telerik RadFilter。过滤器本身允许用户在Telerik RadGrid上执行查询。这一切都很好,但是客户机希望以逗号分隔列表的形式简化过滤 <!-- The new comma-separated list text box --> <asp:TextBox ID="txtQuery" runat="server" TextMode="MultiLine"></asp:TextBox> <asp

好的,我今天的任务之一是修改客户网站上现有的Telerik RadFilter。过滤器本身允许用户在Telerik RadGrid上执行查询。这一切都很好,但是客户机希望以逗号分隔列表的形式简化过滤

<!-- The new comma-separated list text box -->
<asp:TextBox ID="txtQuery" runat="server" TextMode="MultiLine"></asp:TextBox>
<asp:Button ID="btnQuery" runat="server" Text="Filter By List" />

<!-- The existing RadFilter -->
<telerik:RadFilter runat="server" ID="AttendeesGridFilter" Visible="true"
    FilterContainerID="AttendeesGrid" ShowApplyButton="false" />

基本上,本文查看的AttendesGrid(RadGrid)包含关于活动参与者的各种列。此逗号分隔列表允许用户快速批量按与会者ID进行筛选。我想这样做的方法是将txtQuery的内容拉入一个排序列表,然后在RadFilter中重新启动它,这样1、2、3、4的条目将生成如下内容:

这真的可能吗?如果是这样的话,有人能告诉我如何从后端生成自定义RadFilter查询的正确方向吗


谢谢

这可能会帮助您朝着正确的方向开始,我本周在代码中做了类似的事情,在发布之前,我不得不删除一些对象名称和内容

我所做的:

  • 具有所需数据源的radgrid
  • 将数据源获取移动到新函数,并从needDataSource调用此函数
  • 一个过滤器(radtextbox)和按钮,通过调用自定义数据源获取程序并重新绑定网格来触发自定义过滤器
  • 将所有内容附加到radAjax管理器(未显示),以避免整页刷新
放射性栅格

<telerik:RadTextBox ID="searchBox" runat="server" ></telerik:RadTextBox>
<asp:Button ID="btnAdvSearch" runat="server" Text="Search" OnCommand="FilterBySearch" />
<telerik:RadGrid ID="radGrid1" EnableAJAX="True" runat="server" OnNeedDataSource="radGrid1_NeedDataSource" OnItemDataBound="radGrid1_ItemDataBound">
...
</telerik:RadGrid>
搜索按钮将触发此函数,该函数获取源并重新绑定网格

protected void FilterBySearch(object sender, CommandEventArgs e)
{
    SetGridDatasource();
    radGrid1.DataBind();
}
gridDataSource从DB获取对象,我使用linq根据传入的搜索文本进行过滤

private void SetGridDatasource()
{
    var searchText = searchBox.Text.Trim();
    using (var db = new ContactsDataContext())
    {
        var DataObjectList = db.DataObjectGetByAccount(AccountId, 3).ToList();
        var filtered = (from list in DataObjectList where
            (list.DataObjectName.Contains(searchText) ||
            list.id.ToString().Contains(searchText) ||
            list.description.ToString().Contains(searchText))
            select list);

        rgDataObjects.DataSource = filtered;
    }
}

嘿,布莱恩,这就是我最后要做的。这不是一个完美的解决方案,但它奏效了,客户似乎也不太在意。这个答案看起来很可靠,所以我将它标记为已接受。谢谢
private void SetGridDatasource()
{
    var searchText = searchBox.Text.Trim();
    using (var db = new ContactsDataContext())
    {
        var DataObjectList = db.DataObjectGetByAccount(AccountId, 3).ToList();
        var filtered = (from list in DataObjectList where
            (list.DataObjectName.Contains(searchText) ||
            list.id.ToString().Contains(searchText) ||
            list.description.ToString().Contains(searchText))
            select list);

        rgDataObjects.DataSource = filtered;
    }
}