首页 > 解决方案 > Asp.net Telerik 脚本问题

问题描述

我有一行代码位于 Telerik.Web.UI.Webresource.axd 文件中,它破坏了我的自定义代码中的某些内容。

dataBind:function(){if(this._virtualization&&!this._virtualization._isDataBinding&&((this.get_allowPaging()&&this._dataSource.length>this.get_pageSize())||(!this.get_allowPaging()&&this._dataSource.length>this._virtualization._itemsPerView))){this._virtualization._startIndex=null;
this._virtualization.set_bindingType("Client");
this._virtualization.set_cachedData(this._dataSource);
this._virtualization.set_virtualItemCount(this._dataSource.length);
this._virtualization.select();
return;
}
**Array.forEach($telerik.getElementsByClassName(this.get_element().tBodies[0],"rgGroupHeader"),function(i){i.parentNode.removeChild(i)**;
});

我想知道是否可以阻止执行下面的代码行

Array.forEach($telerik.getElementsByClassName(this.get_element().tBodies[0],"rgGroupHeader"),function(i){i.parentNode.removeChild(i)**;

标签: asp.nettelerik

解决方案


您可以覆盖 RadGrid 的 dataBind 方法,这将允许您对其进行自定义:

<script>
Telerik.Web.UI.GridClientSideBinding.prototype.dataBind = function () {
            // Virtualization
            if (this._virtualization && !this._virtualization._isDataBinding &&
                ((this.get_allowPaging() && this._dataSource.length > this.get_pageSize()) ||
                (!this.get_allowPaging() && this._dataSource.length > this._virtualization._itemsPerView))) {
                this._virtualization._startIndex = null;
                this._virtualization.set_bindingType("Client");
                this._virtualization.set_cachedData(this._dataSource);
                this._virtualization.set_virtualItemCount(this._dataSource.length);
                this._virtualization.select();
                return;
            }

            Array.forEach($telerik.getElementsByClassName(this.get_element().tBodies[0], "rgGroupHeader"), function (element) {
                element.parentNode.removeChild(element);
            });
            Array.forEach($telerik.getElementsByClassName(this.get_element().tBodies[0], "rgFooter"), function (element) {
                element.parentNode.removeChild(element);
            });

            var noRecordsItem = $telerik.getElementByClassName(this.get_element(), "rgNoRecords");
            if (noRecordsItem) {
                if (this._dataSource.length > 0) {
                    noRecordsItem.style.display = "none";
                } else {
                    noRecordsItem.style.display = "";

                    this._setPagerVisibility(this._data.PagerAlwaysVisible);
                }
            }

            var dataItems = this.get_dataItems();
            var columns = this.get_columns();

            var i, l1, l2;

            var tableElement = ($telerik.isOpera) ? this.get_element() : this.get_element().tBodies[0];

            if (this._dataSource.length < dataItems.length || tableElement.rows.length == 1) {
                for (i = 0, l1 = dataItems.length; i < l1; i++) {
                    dataItems[i].set_visible(false);
                    dataItems[i].get_element().style.display = "none";
                }

                this._cacheDataItems();
            }

            this._dataBind(this._dataSource);

            var firstSelection = true;
            // When YahooStyleScrolling is used in RadGrid and user 
            //scrolls down, select multiple rows using shift + down arrow key,
            //the selection is not persisted on next page load
            if (this._owner._keyboardNavigationProperties) {
                firstSelection = this._owner._keyboardNavigationProperties.firstSelection;
            }

            var owner = $find(this._owner.get_id());
            if (owner._getPositionedDataItems) {
                owner._getPositionedDataItems(true);
            }

            if (this._owner._keyboardNavigationProperties) {
                this._owner._keyboardNavigationProperties.firstSelection = firstSelection;
            }

            this._fixRowsClassNames();

            this._owner.raise_dataBound(Sys.EventArgs.Empty);

            for (i = 0, l2 = columns.length; i < l2; i++) {
                var isVisible = false;

                if (columns[i].get_element().style.visibility != "hidden" && (columns[i].Display == null || columns[i].Display == true) &&
                    (columns[i]._data.Display == null || columns[i]._data.Display)) {
                    isVisible = true;
                }

                if (!isVisible) {
                    this.hideColumn(i);
                }
            }

            if (this.get_id() == this._owner._masterClientID) {
                var grid = $find(this._owner.get_id());
                if (grid._scrolling) {
                    this._owner._scrolling.setHeaderAndFooterDivsWidth();
                    grid._scrolling._initializeVirtualScrollPaging(true);
                }
            }
        }
</script>

推荐阅读