2013-08-02 48 views
0

我有一個更新面板內的gridview與GridView的第一列中的複選框。當我第一次創建它時,它運行良好。該複選框被設置爲AutoPostBack,並導致異步回發,我可以在其中處理數據並刷新gridview,而不會影響頁面的其餘部分。防止從gridview與javascript異步回發

但是,我需要測試的頁面,客戶端在一定條件下,並顯示一個確認框,用戶,說「這個人是不是就此成立。你確定你要繼續嗎?'

我這樣做,最初,通過在GridView的RowDataBound事件中加入一些類似的代碼;

CheckBox cb = (CheckBox)e.Row.FindControl("myCheckBox"); 
cb.Attributes.Add("onclick", "return check('" + ContactName + "');"); 

與此前的線沿線的一個JavaScript函數:

function check(ContactName) 
{ 
    if (document.getElementById('Listed') == false) 
    { 
    if (confirm('This person is not listed, are you sure you want to continue?')) 
    { 
    return true; 
    } 
    return false; 
    } 
} 

請忽略上面的代碼錯別字,如果從內存中剛剛輸入。事情是,它的工作。如果我的本地變量Listed是false,它會拋出確認框沒問題。

問題是,如果您在確認框中選擇「確定」,複選框生成的回發(應該是異步的,因爲它位於具有ChildrenAsTriggers = true的更新面板內)將被取消。在JavaScript確認後,我必須調用__doPostback才能使Postback發生。但是,然後,我得到一個完整的回發,而不是我想要的異步回發。

所以,我的問題是,如何防止從javascript複選框的異步回發確認,以便如果在javascript確認中選擇Okay,則會發生異步回發。

正如我說的,此刻,我能得到它的工作的唯一方法是做一個全面的回傳用戶點擊後好。

回答

1

該位置的鏈接討論如何取消通過JavaScript異步回發:

http://www.ajaxtutorials.com/ajax-tutorials/cancel-asynchronous-postback-in-c/

的重要組成部分,是在這裏:

<script type="text/javascript"> 
var instance = Sys.WebForms.PageRequestManager.getInstance(); 
instance.add_initializeRequest(instance_initializeRequest); 

function instance_initializeRequest(sender, args) { 
    if (args.get_postBackElement().id == 'btn_Cancel') { 
     instance.abortPostBack(); 
     alert('Postback has been cancelled. Time will not be updated.'); 
    } 
} 
</script> 
1

駐軍尼利提供的方法應該是工作您。

回發和異步回發之間的區別是異步只需修改形式的一些值之前提交,使他們以後回來。這些值指示該控制發起與是什麼樣的信息,也用於其中的iframe應的響應HTML被渲染成一些對象信息的請求。我只是在這裏提出一些我的想法,實現在不同情況下會有所不同。