views:

1137

answers:

1

Rating control in ajax control toolkit will not raise event if user clicks on current rating star becuase in behaviour js it has checking if (this._ratingValue != this._currentRating) , so i want to override this method without changing js and building tookit. How can i do it , can i extend rating control and overide RatingBehavior.js or any other solution.

_onStarClick : function(e) {
        /// <summary>
        /// Handler for a star's click event
        /// </summary>
        /// <param name="e" type="Sys.UI.DomEvent">
        /// Event info
        /// </param>
        if (this._readOnly) {
            return;
        }
        if (this._ratingValue != this._currentRating) {
            this.set_Rating(this._currentRating);
        }
    },
+2  A: 

I have solved it by putting the code just above

    function AddNewRatingHandler() {

        AjaxControlToolkit.RatingBehavior.prototype._onStarClick =
            function(e) {
                if (this._readOnly) {
                    return;
                }
                //   if (this._ratingValue != this._currentRating) {                    
                this.set_Rating(this._currentRating);
                // }
            };
            AjaxControlToolkit.RatingBehavior.prototype.set_Rating = function(value) {                    
                //   if (this._ratingValue != value) {
                this._ratingValue = value;
                this._currentRating = value;
                if (this.get_isInitialized()) {
                    if ((value < 0) || (value > this._maxRatingValue)) {
                        return;
                    }

                    this._update();

                    AjaxControlToolkit.RatingBehavior.callBaseMethod(this, 'set_ClientState', [this._ratingValue]);
                    this.raisePropertyChanged('Rating');
                    this.raiseRated(this._currentRating);
                    this._waitingMode(true);

                    var args = this._currentRating + ";" + this._tag;
                    var id = this._callbackID;

                    if (this._autoPostBack) {
                        __doPostBack(id, args);
                    }
                    else {
                        WebForm_DoCallback(id, args, this._receiveServerData, this, this._onError, true)
                    }

                }
                //  }
            };                
    }
    AddNewRatingHandler();

</script>



</div>

</form>
Priyan R