2011-11-06 34 views
1

我有一個ASP.NET列表框lstActivities。要編輯列表中的項目,用戶可以單擊lnkButton或雙擊列表框。我實現這個:當雙擊列表框時導致異步回發

protected void Page_Load(object sender, EventArgs e) { 
    if (IsPostBack) return; 
    var refDblClick = ClientScript.GetPostBackEventReference(lnkButton, "dblClick"); 
    lstActivities.Attributes.Add("ondblclick", refDblClick); 
} 

protected override void Render(HtmlTextWriter writer) 
{ 
    ClientScript.RegisterForEventValidation(lnkButton.UniqueID, "dblClick"); 
    base.Render(writer); 
} 

我想改變這個,使回發是異步的,使用AJAX。目前,列表框和按鈕位於UpdatePanel中,所以點擊按鈕時會出現異步回傳。但是,當雙擊列表框時,會發生完整的回發。

<asp:UpdatePanel ID="up" UpdateMode="Conditional" ChildrenAsTriggers="true" 
runat="server"> 
    <ContentTemplate> 
    <asp:ListBox ID="lstActivities" runat="server"></asp:ListBox> 
    <asp:LinkButton ID="lnkButton" runat="server" OnClick="lnkButton_Click"> 
    Edit</asp:LinkButton> 
    </ContentTemplate> 
</asp:UpdatePanel> 

如何使雙擊刷新UpdatePanel?

回答

1

我嘗試了建議的解決方案,但沒有運氣。這是一個相當複雜的頁面,有很多UpdatePanels很難解決確切的問題。

最後我去了jQuery的:

$(document).ready(function() { 
    $(document).delegate('#ctl00_body_lstActivities', 'dblclick', function() { 
    eval($('#ctl00_body_lnkButton').attr('href')); 
    }); 
}); 
1

有幾件事情嘗試:

<asp:UpdatePanel ID="up" UpdateMode="Conditional" ChildrenAsTriggers="true" 
runat="server"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="lstActivities" /> 
     <asp:AsyncPostBackTrigger ControlID="lnkButton" /> 
    </Triggers> 
    ......... 
</asp:UpdatePanel> 

protected void Page_Load(object sender, EventArgs e) { 
    if (IsPostBack) return; 
    var refDblClick = ClientScript.GetPostBackEventReference(lnkButton, "dblClick"); 
    lstActivities.Attributes.Add("ondblclick", refDblClick); 

    ScriptManager1.RegisterAsyncPostBackControl(lstActivities); 
} 
1

我只是跑了一個快速的測試與您提供的代碼,我也得到「部分回發」(缺乏的更好的術語,因爲updatepanels總是做完整的回發),點擊按鈕並雙擊列表。

如果您將該頁面中的其他面板設置爲UpdateMode="Conditional",就像您在使用UpdatePanel「向上」一樣,那麼只會更新「up」內的元素。如果您沒有在其他面板上指定更新模式,那麼它們將始終在回發中更新,因爲再次更新面板始終會進行全面回發;他們真正做的是部分刷新頁面。

鏈接MSDN documentation regarding UpdatePanel因爲我認爲這是一個非常有幫助的閱讀。