【问题标题】:ajax toolkit - rating control - want to display current rating & allow people to pick that valueajax 工具包 - 评级控制 - 想要显示当前评级并允许人们选择该值
【发布时间】:2012-01-29 22:25:51
【问题描述】:

我正在尝试使用 ajax 工具包中的评级控件。我目前正在将 currentrating 设置为该项目的平均评级。但是,这意味着没有人可以选择该值。例如 - 如果当前评分为 3,则没有人可以选择 3。

我在 stackoverflow 上找到了这篇帖子,问了同样的问题: Ajax control toolkit Rating Control- Override RatingBehavior.js

但我没有任何运气让它发挥作用。我猜是因为这是一篇旧帖子,大约有 3 年的历史,从那时起,随着评级控制,情况发生了变化。

那么 - 任何人都知道我如何显示当前评级并仍然允许提交该值吗?

谢谢

【问题讨论】:

    标签: asp.net-ajax rating-system


    【解决方案1】:

    我希望您已经找到了解决此问题的方法,以防万一您还没有找到它:

    1. 在评级控件所在的页面/用户控件中添加隐藏字段,例如。

    2. 将以下脚本块添加到页面/用户控件:

      var ratingID = ""; //评级控制的客户端ID var ratingClientID = ""; //评级控制的唯一ID var hfAverageRatingID = ""; //隐藏字段ID
    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 rating._maxRatingValue)) { 返回; } 评级._update(); Sys.Extended.UI.RatingBehavior.callBaseMethod(rating, 'set_ClientState', [rating._ratingValue]); rating.raisePropertyChanged('Rating'); rating.raiseRated(rating._currentRating); rating._waitingMode(true); var args = rating._currentRating + ";" + 评级._tag; var id = rating._callbackID; // 唯一 id -- ctl00$cphMainContainer$bjxRatings1$pageRating 如果(评级._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, null, $get(ratingID) ); 评级 = $find("RatingCtrl_RatingExtender"); });

    值得注意的是,您发布的链接的代码已过时,使用较新的 ajaxToolkit 库,您无法从 javascript 中的“AjaxControlToolkit”引用它。相反,您必须在 js 文件中使用“Sys.Extended.UI”。

    祝你好运, 肖恩

    【讨论】:

    • 我没有找到解决方案 - 但现在我已经搁置了该项目,所以最近没有真正触及它。将其标记为答案,因为听起来它可能有效并且没有其他人回复;)
    • 嗨默克,如果您在尝试完成这项工作时有任何问题,请随时与我联系。总体思路是您监听评级控件点击事件,只有当用户选择的值等于平均值​​(例如 3)时,您才会手动发起回发。否则你什么也不做,让评级控制正常提高它的回发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多