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

按ComboBox过滤RadGrid
EN

Stack Overflow用户
提问于 2014-10-11 06:36:44
回答 1查看 1.4K关注 0票数 0

我的问题是,当我尝试单击Radgrid中的组合框时,它什么也不做。

代码语言:javascript
复制
 <telerik:RadGrid ID="RadGrid" runat="server" DataSourceID="TestReleaseInformationSource" ShowStatusBar="true"
            OnItemCommand="RadGridItemCommand" OnPreRender="RadGrid_PreRender" AllowAutomaticUpdates="true" EnableLinqExpressions="false"
            AllowAutomaticDeletes="true" AllowPaging="true" AutoGenerateColumns="false" AllowFilteringByColumn="true">
            <MasterTableView DataKeyNames="PrimaryKey">
                <Columns>
                    <telerik:GridBoundColumn AllowFiltering="true" UniqueName="TeacherLastName" DataField="TeacherLastName" HeaderText="Last Name">
                        <FilterTemplate>
                            <telerik:RadComboBox ID="radComboBoxLastName" DataSourceID="TeacherLastNameDDL" DataTextField="TeacherLastName" DataValueField="TeacherLastName"
                                AppendDataBoundItems="true" SelectedValue='<%# ((GridItem)Container).OwnerTableView.GetColumn("TeacherLastName").CurrentFilterValue %>'
                                runat="server" OnClientSelectedIndexChanged="TeacherLastNameChanged">
                                <Items>
                                    <telerik:RadComboBoxItem Text="All" Selected="true" />
                                </Items>
                            </telerik:RadComboBox>
                            <telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
                                <script type="text/javascript">
                                    function TeacherLastNameChanged(sender, args)
                                    {
                                        var tableView = $find("<%# ((GridItem)Container).OwnerTableView.ClientID %>");
                                        tableView.filter("TeacherLastName", args.get_item().get_value(), "EqualTo");
                                    }
                                </script>
                            </telerik:RadScriptBlock>
                        </FilterTemplate>
                    </telerik:GridBoundColumn>

关于网格的prerender

代码语言:javascript
复制
    protected void RadGrid_PreRender(object sender, EventArgs e)
    {
        if (RadGrid.EditItems.Count > 0)
        {
            GridNestedViewItem item = (GridNestedViewItem)RadGrid.MasterTableView.GetItems(GridItemType.NestedView)[Convert.ToInt32(RadGrid.EditIndexes[0])];
            item.Visible = false;
        }

        if (RadGrid.MasterTableView.FilterExpression != string.Empty)
        {
            RefreshCombos();
        }
    }

    protected void RefreshCombos()
    {
        TestReleaseInformationSource.SelectCommand = TestReleaseInformationSource.SelectCommand + " WHERE " + RadGrid.MasterTableView.FilterExpression.ToString();

        RadGrid.MasterTableView.Rebind();
    }

我已经盯着这个看了几个小时了,不知道问题出在哪里。任何想法都将不胜感激。如有必要,将发布更多代码。

我发现的一种解决方案是将组合框的RenderMode属性设置为native。我仍然想要一种不同的解决方法。

EN

回答 1

Stack Overflow用户

发布于 2014-10-14 23:28:06

尝试使JS函数唯一:http://www.telerik.com/support/kb/details/using-dynamic-unique-names-for-javascript-functions,我认为所有这些函数都是相互覆盖的,所以只有最后一个函数是活动的,所以只有最后一个函数才会执行。另外,查找JS错误。

另外,尝试从客户端调用过滤器,如下所示的http://www.telerik.com/help/aspnet-ajax/grid-client-side-binding-adding-sort-filter-expressions.html。masterTableView对象最好通过主网格对象的get_masterTableView()方法获得。

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

https://stackoverflow.com/questions/26309027

复制
相关文章

相似问题

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