![](/img/trans.png)
[英]How to manually fire postback event to activate selectedIndexChanged event on the server side of a project Asp.net mvc4
[英]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.