簡體   English   中英

ListBox SelectedIndexChanged事件是否需要在ASP.NET中回發?

[英]Does the ListBox SelectedIndexChanged event require postback in ASP.NET?

我正在嘗試添加JavaScript函數,以將ListBox中的所有選定項目顯示為頁面上Label中的合並字符串。 這是必需的,因為AutoPostBack =“ true”將導致ListBox一直滾動回到第一個選定的項目。

因此,此代碼有效:

 <script type="text/javascript">
    function Updatelist() { 
        var sel = document.getElementById('<%=lstbxStuff.ClientID%>'); 
        var lbl = document.getElementById('ctl00_cph_lblSelectedStuff');
        var listLength = sel.options.length; 
        var textForListbox = "";
        var list2length = 0;
        for (var i = 0; i < listLength; i++) { 
            if (sel.options[i].selected) { 
               if(list2length == 0) {
                    textForListbox = sel.options[i].text; 
                } else {
                    textForListbox = textForListbox + ", " + sel.options[i].text; 
                }
                list2length++; 
            } 
        } 
        lbl.innerText=textForListbox;

        return textForListbox;
    } 
</script>

不幸的是,我仍然需要SelectedIndexChanged委托背后的代碼。 有沒有一種方法可以同時使用這兩種方法而無需執行PostBack? 當我設置AutoPostBack =“ false”時,似乎永遠無法到達我的委托。

我認為,如果這不是您想要的行為,那么AutoPostBack並不是您的理想之選。 當ASP.Net執行完整的回發時,它與“傳統的” HTML表單過帳相同,將表單的全部內容發送回服務器,並等待響應(由於方式不同,它恰好在同一頁面上) Asp.Net響應)。 因此,為什么列表框中的位置會丟失-這是您要返回的全新列表框。

您是否將ASP.Net Ajax(UpdatePanels)視為一種可能的選擇? 這與回發的行為相同,它將回發數據到服務器並調用您的方法,但僅回發頁面的一部分。

如果要調用服務器端的lign,則必須執行回發。

服務器上需要運行的代碼是什么? 您應該能夠使用JavaScript完成所有工作,然后在選擇了所有列表項之后,使用另一個觸發器(不是selectedIndexChange)來運行服務器端代碼。

您是否也看到過,Ajax UpdatePanel和maintainScrollPositionOnPostBack =“ true”,以便頁面在回發后保留其滾動位置。 但是,這只會影響頁面滾動條,而不會影響選擇框。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM