Требует ли событие ListBox SelectedIndexChanged обратной передачи в ASP.NET? - PullRequest
0 голосов
/ 26 октября 2010

Я пытаюсь добавить функцию JavaScript, чтобы показать все выбранные элементы из ListBox в виде объединенных строк в метке на странице. Это необходимо, потому что 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", мой делегат, кажется, никогда не будет достигнут.

Ответы [ 2 ]

0 голосов
/ 26 октября 2010

Если вы хотите вызвать deligate на стороне сервера, вам нужно сделать PostBack.

Какой код на сервере должен быть запущен? Вы должны иметь возможность выполнять всю работу в JavaScript, а затем использовать другой триггер (не selectedIndexChange) для запуска кода на стороне сервера после выбора всех элементов списка.

Вы также видели, Ajax UpdatePanel и keepScrollPositionOnPostBack = "true", так что страница сохраняет свою позицию прокрутки после обратных передач. Однако это повлияет только на полосу прокрутки страниц, а не на поле выбора.

0 голосов
/ 26 октября 2010

Я не думаю, что AutoPostBack - это то, что вам нужно, если это не то поведение, которое вам нужно. Когда ASP.Net отправляет полный пост обратно, он совпадает с «традиционным» постом в форме HTML, отправляя все содержимое формы обратно на сервер и ожидая ответа (который, как оказалось, является той же страницей из-за Asp.Net отвечает). Следовательно, почему позиция в списке потеряна - это новый список, который вы возвращаете.

Рассматривали ли вы ASP.Net Ajax (UpdatePanels) как один из возможных вариантов? Это будет вести себя так же, как и обратная передача в том, что она отправит данные обратно на сервер и вызовет ваши методы, но только отправит обратно часть страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...