Нечетное поведение веб-формы после установки clienteidmode в статическое состояние
Привет,
Я работаю в веб-форме, которая работала так, как ожидалось, прежде чем изменить свой ClientIdMode на статический. Очевидно, мне пришлось внести несколько корректив в код, так как множество панелей обновления в нем решили игнорировать набор AsyncPostBackTrigger или, по крайней мере, так мне показалось.
Как бы то ни было, после корректировки почти все вернулось в норму, за исключением странного поведения, которое я попытаюсь описать. Одна из многих существующих кнопок вызывает свой код за кодом и обновляет как БД, так и пользовательский интерфейс, как и ожидалось. Это событие устанавливает фокус на желаемом элементе управления.
protected void lkBtnOkDcto_Click(object sender, EventArgs e) { ... txDocNum.Focus(); }Я могу начать печатать в нем, как будто все было персиковым.
Вот в чем загвоздка. Когда я наведу курсор мыши на любой элемент управления (кнопку, linkbutton и т. д.), Все изменения CSS или стандартное поведение, такие как предварительный просмотр ссылок, настройки указателя и т. д., просто исчезнут. Я должен нажать в любом месте страницы, чтобы он "снова заработал".
Есть идеи?
Что я уже пробовал:
Я проверил код, который устанавливает фокус, обновляет каждую задействованную UpdatePanel, и каждый элемент управления (label, textbox, ddl и т. д.) получает правильную настройку.
Одна вещь, которую я заметил: когда я вынужден "щелкнуть" в любом месте, чтобы "повторно активировать" мышь, фокус отправляется на другой элемент управления, который не имеет установленного автофокуса, и его фокус никогда не устанавливается в коде позади.
Спасибо за Ваш вклад.
Vincent Maverick Durano
Я не удивлюсь, если вы получите странное поведение, потому что UpdatePanel-это просто "зло".
Как вы определяете свой CSS? Ваша проблема больше связана с наведением курсора мыши, верно? Если это так, то поищите любой скрипт/css в вашем проекте, который относится к наведению курсора мыши. Возможно, вы ссылаетесь на старые идентификаторы вместо новых статических идентификаторов.
alexvw
Привет, Винсент, спасибо за Ваш вклад.
Я действительно проверил все css/javascript и код позади, но без какой-либо удачи. Любая Контрольная ссылка всегда была настроена на контроль.ClientId (не использует жестко закодированные идентификаторы).
Я просто не могу точно определить, почему установлен фокус (где я хочу), нажатия клавиш работают так, как ожидалось, но не мышь. Я реализовал javascript, чтобы позволить навигацию с помощью клавиш со стрелками, нажав Enter, Tab, и все они работают просто отлично.
Проблема ограничивается указателем мыши; также заметил, что независимо от того, где я устанавливаю фокус с помощью клавиатуры, самый следующий щелчок мыши всегда будет посылать фокус на один и тот же непреднамеренный элемент управления.
Буду продолжать чесать голову!
Vincent Maverick Durano
Ведет ли это себя во всех браузерах или это изолировано?
alexvw
Хороший вопрос! Винсент.
Теперь я могу сказать, насколько я устал; мне не пришло в голову проверить это (что я обычно и делаю). И он постоянен во всех браузерах = это не браузер, это мой код. (Проверено: FF, Opera, Chrome, Vivaldi, Brave, Safari, IE, Edge)
Должно быть, где-то есть что-то такое, чего я сейчас просто не вижу (надеюсь, туннельное зрение). Я также заметил, что несколько классов bootstrap: col-это, col-то, в некоторых разделах также дают проблемы (раньше они этого не делали). Это должно быть что-то, что я сделал или не сделал после изменения ClientIDMode, потому что это было не так.
Теперь я знаю, что должен не искать странные вещи, а просмотреть всю ситуацию Id (и ViewStateMode, с которым я тоже возился).
Спасибо за вашу проницательность. Хорошего вам уик-энда.
Ваше здоровье!
ZurdoDev
Вам нужно использовать элементы управления браузером, отладить его и выяснить, что происходит.
alexvw
Привет Зурдодев,
У меня есть; но я не могу точно определить проблему; как уже объяснялось ранее, "...нажатия клавиш работают так, как ожидалось, но не мышь. Я реализовал javascript, чтобы позволить навигацию с помощью клавиш со стрелками, нажав Enter, Tab, и все они работают просто отлично."
Проблема остается; мышь, кажется, становится "неактивной", заставляя щелчок "повторно включить" ее.
Спасибо за Ваш вклад.