ajax toolkit - контроль рейтинга - хотите отобразить текущий рейтинг и позволить людям выбрать это значение - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь использовать контроль рейтинга в наборе инструментов ajax.В настоящее время я устанавливаю текущую оценку на любой средний рейтинг для этого элемента.Однако это означает, что никто не может выбрать это значение.Например, если текущий рейтинг равен 3, никто не сможет выбрать 3.

Я нашел этот пост в stackoverflow, задавая тот же вопрос: Ajax control toolkit

Но мне не повезло заставить это работать.Я предполагаю, потому что это старый пост, около 3 лет, и с тех пор все изменилось с контролем рейтинга.

Итак, кто-нибудь знает, как я могу отобразить текущий рейтинг и разрешить отправку этого значения?

Спасибо

1 Ответ

0 голосов
/ 26 мая 2012

Я надеюсь, что вы нашли решение этой проблемы, на случай, если у вас ее нет:

  1. Добавить скрытое поле на страницу / пользовательский элемент управления, где находится элемент управления рейтингом, например

  2. Добавьте следующий блок скрипта на страницу / пользовательский элемент управления:

    var ratingID = ""; // идентификатор клиента для контроля рейтинга var ratingClientID = ""; // уникальный идентификатор для контроля рейтинга var hfAverageRatingID = ""; // скрытый идентификатор поля
  3. Добавьте приведенный ниже код во внешний файл js, а затем укажите его в элементе управления ScriptManagerProxy или ToolScriptManager:

    рейтинг рейтинга;

    Sys.Application.add_load (function () { $ (". ratingStars a"). click (function () { var avgValue = $ ("#" + hfAverageRatingID) .val (); var ratingValue = $ find ("RatingCtrl_RatingExtender"). get_Rating (); // мы хотим запускать пользовательский код только тогда, когда средняя оценка == выбранная оценка if (ratingValue == avgValue) { if ((ratingValue <0) || (ratingValue> rating._maxRatingValue)) { вернуть; } rating._update (); Sys.Extended.UI.RatingBehavior.callBaseMethod (rating, 'set_ClientState', [rating._ratingValue]); rating.raisePropertyChanged ( 'Рейтинг'); rating.raiseRated (rating._currentRating); rating._waitingMode (истина); var args = rating._currentRating + ";" + rating._tag; var id = rating._callbackID; // уникальный идентификатор - ctl00 $ cphMainContainer $ bjxRatings1 $ pageRating if (rating._autoPostBack) { __doPostBack (id, args); } еще { WebForm_DoCallback (id, args, rating._receiveServerData, rating, rating._onError, true) } } }); $ create (Sys.Extended.UI.RatingBehavior, {"AutoPostBack": true, "CallbackID": ratingClientID, "ClientStateFieldID": "RatingCtrl_RatingExtender_ClientState", "id": "RatingCtrl_RatingExtender"}, null, ratingID, получить) (получить ); rating = $ find ("RatingCtrl_RatingExtender"); });

Что интересно отметить, это то, что опубликованная вами ссылка имеет устаревший код, с более новой библиотекой ajaxToolkit, на которую вы не можете ссылаться из AjaxControlToolkit в javascript. Вместо этого вы должны использовать 'Sys.Extended.UI' в файле js.

Удачи, Шон

...