2011-01-06 102 views
2

我在asp:update面板中使用asp:listview中的jQuery評分插件。以下是點擊評分星號時所調用的功能。updatel面板內的jQuery評分插件

function DisplayRatings() {    
      $('DIV.ratingBar').each(function() { 
       var id = $(this).attr('id'); 
       var count = $(this).attr('rel'); 
       $('#' + id).raty({ 
        showCancel: false, 
        readOnly: false, 
        showHalf: true, 
        start: count, 
        onClick: function(score) {      
         // I have to pass the score and ID to server side      
        } 
       }); 
      }); 
     } 

現在我必須通過「分數」和「ID」到服務器端,並調用其重新綁定列表視圖,並更新屏幕上的得分沒有屏幕刷新的方法。 請建議如何去解決這個問題(我不能使用ajax工具包評級,因爲它不支持半星評級)

回答

3

要將數據傳遞到服務器,只需將其存儲在隱藏窗體字段中(在UpdatePanel ):

<asp:HiddenField id="score" runat="server" name="Score" ClientIDMode="Static" /> 
<asp:HiddenField id="id" runat="server" name="Score" ClientIDMode="Static" /> 

如果你有很多數據的來回傳遞,也許這將是有意義只使用一個隱藏字段,並使用序列化/反序列化存儲它都在那裏。然後在你的onClick功能,設置這些字段的值,並啓動異步回發:

$('#score').val(score); 
$('#id').val(id); 
__doPostBack('UpdatePanelID', '') 

這將導致你的UpdatePanel的異步更新,同樣如果綁定提交控件被點擊用戶。

請注意,如果jQuery控件本身位於UpdatePanel中,則必須在異步回發後重新配置它,因爲效果就好像頁面已重新加載一樣。但是,在異步回發之後,您可能在$(document).ready()中運行的任何JavaScript代碼將不會運行,因爲整個頁面並未實際重新加載。

理想情況下,保持更新面板之外的評級控制,因爲您可能不希望它由於啓動的事件而發生更改。

// Page startup script - this adds a hook after an update panel is refreshed 
Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(onRefresh); 

function onRefresh(sender, args) { 
    // You can try to check which panel was updated 
    var panelsUpdated = args.get_panelsUpdated(); 
    var panelsCreated = args.get_panelsCreated(); 
    // but usually it's easier to just track the state of your jquery stuff 
    if (my_jquery_thing_is_visible && 
     my_indicator_that_it_has_already_been_configured===false) { 
     configureJqueryThing(); 
    } 
} 
0

通過解決它:如果這是不可能出於某種原因,或者你只是需要配置它的第一次它是可見一個動態的方式,然後刷新頁面的末尾添加掛鉤jQuery與AJAX。

ASPX

功能SaveRating(ID,得分){
變種PARAMS = '{的linkID: 「' + ID + ' 」ratingVal:「' +得分+ '」}';
$就({ 類型: 「POST」, URL: 「page.aspx/UpdateRating」, 數據:參數,可以 的contentType: 「應用程序/ JSON;字符集= UTF-8」, 數據類型:「JSON 「 }); }

aspx.cs

[System.Web.Services.WebMethod] 公共靜態無效UpdateRating(串的linkID,INT ratingVal) { //代碼更新到DB }