在Telerik RadGrid中持久化选中的项目(分页、排序、过滤)

Persist selected items in Telerik RadGrid (paging, sorting, filtering)

本文关键字:分页 排序 过滤 RadGrid Telerik 持久化 项目      更新时间:2023-09-26

我正在使用Telerik RadGrid,并且需要通过分页,排序和保存所选项目;过滤。我发现了这个例子,并尝试了他们的例子,得到了不同的结果。有时它可以在Chrome中工作,尽管有很多bug(有时一次只允许一个选择)。当我在IE中运行它时,我得到这个错误

无法获取属性'get_element'对象的值为null或未定义的

下面是我使用的代码:
<telerik:RadScriptBlock ID="RadScriptBlock1" runat="server">
    <script type="text/javascript">
            var selected = {};
            function RadGrid_RowSelected(sender, args) {
                var rfp = args.getDataKeyValue("RFPID");
                if (!selected[rfp]) {
                    selected[rfp] = true;
                }
            }
            function RadGrid_RowDeselected(sender, args) {
                var rfp = args.getDataKeyValue("RFPID");
                if (selected[rfp]) {
                    selected[rfp] = null;
                }
            }
            function RadGrid_RowCreated(sender, args) {
                var rfp = args.getDataKeyValue("RFPID");
                if (selected[rfp]) {
                    args.get_gridDataItem().set_selected(true);
                }
            }
            function RadGrid_GridCreated(sender, eventArgs) {
                var masterTable = sender.get_masterTableView();
                var selectColumn = masterTable.getColumnByUniqueName("SelectColumnID");
                var headerCheckBox = $(selectColumn.get_element()).find("[type=checkbox]")[0];
                if (headerCheckBox) {
                    headerCheckBox.checked = masterTable.get_selectedItems().length ==
                        masterTable.get_dataItems().length;
                }
            }
    </script>
</telerik:RadScriptBlock>

和网格:

<telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="True" AllowPaging="True"
                    OnNeedDataSource="RadGrid1NeedDataSource" Width="100%" AllowMultiRowSelection="True" AllowFilteringByColumn="false">
                    <MasterTableView AllowMultiColumnSorting="true" PageSize="100" 
                        DataKeyNames="RFPID, PropCode, Parent, PropName, Address" 
                        AutoGenerateColumns="true" ClientDataKeyNames="RFPID">
                        <Columns>
                            <telerik:GridClientSelectColumn />
                        </Columns>
                        <PagerStyle AlwaysVisible="true"  />
                    </MasterTableView>    
                    <ClientSettings EnableRowHoverStyle="true">
                        <Scrolling AllowScroll="True" UseStaticHeaders="True" SaveScrollPosition="True"></Scrolling>
                       <Selecting AllowRowSelect="true" />
                        <ClientEvents OnRowCreated="RadGrid_RowCreated" OnRowSelected="RadGrid_RowSelected"
                            OnRowDeselected="RadGrid_RowDeselected" OnGridCreated="RadGrid_GridCreated" />
                    </ClientSettings>  
                </telerik:RadGrid>

IE错误发生在这一行:

var headerCheckBox =$ (selectColumn.get_element());("(type =复选框)")[0];

您错过了Jquery的include。

 <telerik:RadScriptManager ID="RadScriptManager2" runat="server">
            <Scripts>
                <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
                <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
                <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
            </Scripts>
        </telerik:RadScriptManager>