2012-10-30 3 views
0

Я пытаюсь добавить клиентские события в раскрывающийся список telerik, но это делает его статическим. По статике я имею в виду, что он больше не ведет себя как выпадающий список, его не реагирует, когда я нажимаю и, следовательно, не могу отображать/выбирать значения. Но как только я сменил выпадающий список на combobox, он отлично работает. Это позволяет мне щелкнуть и просмотреть/выбрать значения.Добавление событий клиента в выпадающий список telerik делает его статическим

Почему это происходит? почему я могу добавить клиентские события в выпадающий список telerik, но не в раскрывающемся списке telerik?

Вот как я заполнить Combo Box:

 <%= Html.Telerik().ComboBox().Name("ComboBox") 
      .HtmlAttributes(new { @id = "ComboBox", @style = "width:104px;" }) 
      .ClientEvents(events => 
     { 
      events.OnDataBinding("ComboBox_onDataBinding"); 
     })%> 

function ComboBox_onDataBinding(e) { 
    var comboBox = $('#ComboBox').data('tComboBox'); 
       comboBox.dataBind([ 
        { Text: "Product 1", Value: "1" }, 
        { Text: "Product 2", Value: "2", Selected: true }, 
        { Text: "Product 3", Value: "3" }, 
        { Text: "Product 4", Value: "4" }, 
        { Text: "Product 5", Value: "5" } 
       ], true); 
}; 

Вот как я заполнить выпадающий список:

 <%= Html.Telerik().DropDownList().Name("DropDownList") 
      .HtmlAttributes(new { @id = "DropDownList", @style = "width:104px;" }) 
      .ClientEvents(events => 
     { 
      events.OnDataBinding("DropDownList_onDataBinding"); 
     })%> 

function DropDownList_onDataBinding(e) { 
    var dropDownList = $('#DropDownList').data('tDropDownList'); 
       dropDownList.dataBind([ 
        { Text: "Product 1", Value: "1" }, 
        { Text: "Product 2", Value: "2", Selected: true }, 
        { Text: "Product 3", Value: "3" }, 
        { Text: "Product 4", Value: "4" }, 
        { Text: "Product 5", Value: "5" } 
       ], true); 
}; 

Спасибо заранее.

+0

это может быть потому, что ваши компоненты в обратном направлении? у вас есть '.DropDownList(). Name (" ComboBox ")' и '.ComboBox(). Name (" DropDownList ")' –

+0

@ob. Извините, это был тип промаха. Проблема все еще существует. – user793468

ответ

1

В вашем случае, когда вы не используете привязку данных на стороне клиента Ajax или WebService, вы не должны настраивать обработчик событий OnDataBinding. Вам нужно настроить OnLoad вместо:

.ClientEvents(events => events.OnLoad("ddl_onLoad").OnChange("ddl_onChange") 

обработчики:

function ddl_onLoad(e) { 

    var ddl = $(this).data('tDropDownList'); 

    ddl.dataBind([ 
     { Text: 'Product 1', Value: '1' }, 
     { Text: 'Product 2', Value: '2', Selected: true }, 
     { Text: 'Product 3', Value: '3' }, 
     { Text: 'Product 4', Value: '4' } 
    ], true); 
} 

function ddl_onChange(e) { 

    //var ddl = $(this).data('tDropDownList'); 
    console.log(e.value); 
} 
+0

Не имеет значения, как я добавляю клиентские события, как только я добавляю клиентское событие в telerik ddl, он становится statis (can not view/select values, когда я нажимаю на него). Я пробовал свой путь, но не работает:/ – user793468

+0

Примечание. Он отлично работает, когда я меняю его на поле со списком telerik. – user793468

+1

Попробуйте удалить объявление атрибута «id» из DropDownList (.HtmlAttributes (new {@id = "DropDownList ", ...). Это присваивает атрибуту id = 'DropDownList' другому элементу html. – Rustam

0

вы звоните .dataBind() внутри OnDataBinding обработчик, который только собирается вызвать OnDataBinding событие снова и снова ...

рассмотреть возможность клиентской стороне привязки данных внутри OnLoad события или что-то

+0

не имеет значения, какое событие я добавляю. Как только я добавляю событие клиента и функцию JS для этого события, выпадающий список telerik становится статичным. Я попробовал OnLoad, OnChange, OnDataBinding, OnDataBound все из них – user793468

+0

@ user793468 любой шанс, что у вас более одного выпадающего с тем же именем? –

+0

Нет, я дважды проверял, даже изменил его на другое имя и попробовал. – user793468

Смежные вопросы