Почему я не получаю никаких вкладок в простом демо, используя asp.net и jQuery UI? - PullRequest
1 голос
/ 07 ноября 2010

Я не могу заставить мои вкладки работать, неважно, что я делаю. Демо очень просто и понятно, но я должен что-то пропустить. Применяется CSS и вызывается функция $("#pnlTabs").tabs();, но ничего не происходит.

Пожалуйста, помогите мне, этот JS сводит меня с ума.

EDIT:

вот ссылка на zip-файл с полным решением http://dl.dropbox.com/u/12791555/HelpDeskControls.zip

EDIT2:

Еще один вопрос. Когда вы нажимаете на вкладку «услуги» или «события», возможно ли, что функция из codebehind вызывается? Допустим, когда я нажимаю на вкладку «События», вызывается та же функция, что и при нажатии на кнопку «Загрузить»

1 Ответ

2 голосов
/ 07 ноября 2010

Я подозреваю, что причиной может быть искажение идентификатора.

Измените свой сценарий на этот и повторите попытку

$(function () {
    $('#<%=pnlTabs.ClientID %>').tabs();
});

Поскольку спецификация HTML требует, чтобы идентификаторы элементов были уникальными в DOMплатформа ASP.NET пытается избежать возможности появления дубликатов идентификаторов путем перезаписи идентификаторов, которые вы назначаете серверным элементам управления на странице.Если вы подумаете об этом, в некоторой степени это имеет смысл, например, при использовании таких элементов управления, как, например, представление сетки, когда у вас есть серверный элемент управления с идентификатором, который вы хотели бы повторить для каждого элемента в источнике данных, вы бы не захотелиидентификатор, который также будет повторяться, поскольку это приведет к неверному HTML.

Любой элемент управления, украшенный интерфейсом INamingContainer, создает новое пространство имен идентификатора, что приведет к искажению идентификатора элемента нана стороне клиента. * Используя разметку, приведенную выше, мы можем получить идентификатор, который будет сгенерирован в ответе, отправленном клиенту, выведенном на страницу при вызове функции jQuery.

* ASP.NET 4может быть установлен, чтобы не искажать идентификаторы, на свой страх и риск!

РЕДАКТИРОВАТЬ:

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

Кажется, что вам не хватает большого фрагмента CSS, необходимого для стилизации вкладок, и именно классы CSS определяют некоторые свойства вкладок.Если вы перетащите ссылку на CSS-тему jQuery UI, размещенную на Google API, то все будет работать правильно.Я добавил следующее после вашей ссылки на таблицу стилей CSS

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>

, и все выглядело так, как ожидалось.

Кстати, вас может заинтересовать ASP.NET MVC - inМое личное мнение после того, как я использовал его в течение года, если бы у меня был выбор, я бы не стал возвращаться к веб-формам.Если вам удобно работать с HTML, CSS и JavaScript, вы можете использовать его более интуитивно, чем веб-формы:)

...