Использование Javascript для определения, когда пользователь выбрал элемент в списке ASP.NET - PullRequest
4 голосов
/ 16 марта 2010

Я занимаюсь разработкой веб-приложения ASP.NET, которое включает в себя карты Google. У меня есть список ASP.NET на моей странице, который содержит список элементов. Когда пользователь выбирает один из элементов, я хотел бы показать этот элемент на карте. Основная сложность заключается в том, что карты Google используют для управления им javascript, а список - это серверный элемент управления.

Я могу придумать два способа сделать это. Первый будет включать в себя список, вызывающий функцию javascript, когда пользователь выбирает новый элемент. Затем я могу написать эту функцию для выполнения необходимых операций с картой. К сожалению, свойство OnSelectedIndexChanged списка не поддерживает функции javascript.

Второй включает в себя обертывание UpdatePanel вокруг списка и получение списка для выполнения обратной передачи. В событии SelectedIndexChanged в VB / C # мне нужно было бы как-то сделать вызов функции JavaScript, которая затем обновит карту.

Какое решение я могу использовать?

Спасибо

- Амр

Ответы [ 3 ]

3 голосов
/ 16 марта 2010

В вашем коде (в вашей загрузке страницы) просто добавьте обработчик javascript в атрибут OnChange, который указывает на вашу функцию javascript. Например:

lbYourListBox.Attributes.Add("onChange", "UpdateYourMap();");

Вы также можете добавить это к своему элементу управления, используя встроенный javascript, но я предпочитаю делать это в коде, чтобы платформа могла обрабатывать совпадения имен.

2 голосов
/ 16 марта 2010

Вы можете просто встроить javascript на свою страницу, избегая при этом использования ASP. Вставьте код в тело документа:

<script language="javascript">
body.onload=function(){
    var lb=document.getElementById("yourlistboxid");
    lb.onChange = function(){
       // put your handling code here
    }
}
</script>
1 голос
/ 17 марта 2010

, чтобы продемонстрировать другой подход, вот примерное руководство:

void listbox_SelectedIndexChanged( ... ) {

    string js = string.Format("callToMapsFunction({0});", listbox.SelectedValue);
    string scriptKey = "mapscript";

    ScriptManager.RegisterStartupScript( listbox, typeof(ListBox), scriptKey
        , js, true);
}

RegisterStartupScript запускает любой javascript, который вы дадите ему после завершения частичной обратной передачи. Вам не обязательно передавать значение списка - только те данные, которые вы хотите предоставить, в API карт. первые 3 пункта предназначены для предотвращения регистрации скрипта несколько раз (насколько я знаю). Значение true в конце говорит администратору сценариев автоматически добавлять открывающие и закрывающие теги вокруг вашего кода js.

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