2013-05-23 2 views
1

У меня есть listview категорий с checkboxes (категория filter). Но я сделал пользовательские checkbox (linkButton with css - это мой checkBox).Listview ItemCommand не срабатывает из-за jQuery

<asp:LinkButton CssClass="checkBox" runat="server"> 

.checkbox {background: url('/style/images/checkbox.png') no-repeat top left;width:9px;height:9px;text-decoration:none; 
.checked {background: url('/style/images/selected_checkbox.png') no-repeat top left;} 

И JQuery в документе готовы на LinkButton (мой пользовательский флажок щелчок) Я изменить CSS (добавить проверенный класс)

$(".filter-select .checkbox").click(function() { 
      if ($(this).hasClass('checked')) 
       $(this).removeClass('checked'); 
      else $(this).addClass('checked'); 

      return false; 
     }); 

Все работает нормально, но когда я хочу ручка проверена chekcboxes на listview itemCommand, itemCommand не срабатывает ... Если я удалю вызов jquery, все будет в порядке, поэтому я думаю, что jquery блокирует или предотвращает запуск элемента itemCommand на клике linkButton.

Но мне нужно было бы, чтобы этот itemCommand звонил, так что мне делать? Должен ли я удалить/изменить способ, которым у меня есть checkBox с jQuery. Или я что-то пропустил ... Я также попробовал OnClientClick = "this.disabled = 'true';", что я видел, это другое сообщение, но результатов не было.

+2

Я думаю, что вы должны вызвать dopostback() вручную в этом случае .. поскольку вы перехватили обычные функции генерируемого asp.net кода .. или удалите 'return false' –

+0

Если я удалю return false , itemCommand уволен, но css элемента управления linkButton не изменяется ... Возможно, мне стоит подумать об изменении этого CSS-кода jQuery с чем-то другим - возможно, я должен изменить этот css в itemCommand, а не в jQuery – janilemy

+0

hmm ... на самом деле если вы не используете ajax, тогда, когда itemCommand увольняется, а затем, когда он возвращается, он переписывает всю вашу страницу. В этом случае нет возможности применить этот стиль. –

ответ

1

Хорошо, я изменил свой подход и удалил jQuery thinkg ... Я поместил все в метод ItemCommand, поэтому получаю элемент управления в itemCommand как

LinkButton selected = e.Item.FindControl("id") as LinkButton; 

Затем я проверяю классы, как:

selected.CssClass = (selected.CssClass != "checkbox checked") ? "checkbox checked" : "checkbox"; 

И чем я проверяю для всех проверяемых LinkButtons (пользовательские флажки)

Таким образом, не требуется jQuery interupt. Благодарим за помощь

+0

Надеюсь, что мое решение - o.k ... Я также буду использовать updatePanel, чтобы предотвратить полную обратную передачу на firebox itemCommand, и вот оно ... Исправьте меня, если я ошибаюсь. Но теперь все работает, я могу изменить css и получить идентификаторы dataKeyNames, чтобы найти свое решение. – janilemy

+0

Это тоже хорошо. Вы там используете Updatepanel? –

+0

Да, я буду за предотвращение полной обратной передачи при изменении состояния флажка ... Спасибо за помощь Spirals Whirls .. – janilemy

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