
ASPxClientDataView = _aspxCreateClass(ASPxClientControl, {
    constructor: function(name) {
        this.constructor.prototype.constructor.call(this, name);

        this.allowMultipleCallbacks = false;
        this.callbackPrefixes = { Custom: "c", PagerClick: "p" };
        this.sizingConfig.allowSetHeight = false;
    },    
    
    GetPageIndexInputElement: function(){
        return _aspxGetElementById(this.name + "PI");
    },
    GetContentCell: function(){
        return this.GetChild("_CCell");
    }, 
    GetItemsCell: function(){
        return this.GetChild("_ICell");
    },
    DoPagerClick: function(value) {
        var inputElement = this.GetPageIndexInputElement();
        if(inputElement != null) {
            var preparedArgs = this.PrepareCallbackArgs(inputElement.value + __aspxCallbackSeparator + value, false);
            this.CreateCallback(preparedArgs, "PAGERCLICK");
        }
    },
    CustomCallback: function(args) {
        var preparedArgs = this.PrepareCallbackArgs(args, true);
        if(!_aspxIsExists(this.callBack)) {
            if(this.isInitialized)
                this.SendPostBack(preparedArgs);
            return;
        }
        this.CreateCallback(preparedArgs, "CUSTOMCALLBACK");
    },
    OnCallback: function(result) {
        var inputElement = this.GetPageIndexInputElement();
        if(inputElement != null) 
            inputElement.value = result.index;
        var element = this.GetContentCell();
        if(element != null) 
            _aspxSetInnerHtml(element, result.html);
    },
    DoBeginCallback: function(command){
        this.ShowLoadingPanel();
        ASPxClientControl.prototype.DoBeginCallback.call(this, command);
    },
    PrepareCallbackArgs: function(args, isCustomCallback){
        return (isCustomCallback ? this.callbackPrefixes.Custom : this.callbackPrefixes.PagerClick) + args;
    },
    ShowLoadingPanel: function(){
        this.CreateLoadingPanelWithAbsolutePosition(this.GetContentCell());
    },
    PerformCallback: function(parameter) {
        this.CustomCallback(parameter);
    }
});
ASPxClientDataView.Cast = ASPxClientControl.Cast;

function aspxDVPagerClick(name, value) {
    var dv = aspxGetControlCollection().Get(name);
    if(dv != null) dv.DoPagerClick(value);
}
