2010-01-15 3 views
1

Я использую каскадное выпадающее меню с http://stephenwalther.com/blog/archive/2008/09/07/asp-net-mvc-tip-41-creating-cascading-dropdown-lists-with-ajax.aspx.событие смены триггера в каскадном выпадающем списке

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

Но событие изменения не вызывая с попытками:

  $('#Country').trigger('change'); 
         or 
      $('#Country').change(); 

Как я могу вызвать событие изменения для этого выпадающего списка, чтобы вызвать каскадное выпадающее меню.

+0

Что было ваше решением? –

ответ

0

Являются ли ваши выпадающие списки управляющими серверами (asp: dropdownlist tag) или клиентами (выберите тег)?

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

В ASP.NET стороне сервера управления имеют разные, сгенерированный идентификатор (на стороне клиента так DropDownList с ID «Страна» будет иметь идентификатор стороне клиента что-то вроде ct01_ct050_Country.

В этих случаях можно впрыскивать на клиентской стороне ID во время выполнения на разметке, используя:

$('#<% Country.ClientID %>').change(function() { 
    //code here 
}); 

Во время выполнения, тонированный код/​​наценка будет в конечном итоге выглядит как:

$('#ct01_ct050_Country').change(function() { 
    //code here 
}); 

Ваших Другой вариант, чтобы избежать идентификаторов клиент/сервер должен применить уникальное имя класса CSS для управления и выберите на ней вместо того, чтобы:

Markup:

<asp:DropDownList ID="Country" CssClass="countryDD" runat="server" /> 

и JQuery:

$('select.countryDD').change(function() { 
    //code here 
}); 

Этот ответ хорошо подходит для прямого ASP.NET. Я не уверен, что это так важно для MVC, потому что я не использую эту фреймворк, но я бы предположил, что он довольно близок к концепции или разметке против клиентского кода.

Надеется, что это может помочь ...

+0

Я использую <% = Html.DropDownList («Страна»)%> и <% = Html.CascadingDropDownList («Штаты», «Страна»)%>. Пробовал варианты, как я сказал в своем вопросе, но не повезло с этими вариантами. И я использую asp.net mvc (C#) для своего приложения – Prasad

+0

После просмотра MVC я вижу, что вам не нужны идентификаторы клиентов, как в традиционном ASP.NET. Другие идеи: Вы закрепили свой код в $ (document.ready (function() {// здесь), чтобы убедиться, что страница была готова? В вашем примере кода также есть $ («# Страна»). Change(); Правильно ли ваш синтаксис в вашем реальном коде? $ ('# Country'). Change (function() {// здесь код}); Не знаю, опустила ли вы функцию "function() {}" для простоты или просто пропустил его совсем ... –

0

Для моего каскадных выпадающих, я использую jqueryon или bind

$('#Country').on('change', function() { 
    //Do stuff here 

}); 

$('#Country').bind('change', function() { 
    //Do stuff here 

}); 
Смежные вопросы