Клиентский идентификатор элементов изменяется на странице sharepoint? Зачем? Когда? - PullRequest
0 голосов
/ 19 января 2012

Идентификатор клиента каждого элемента со страницы sharepoint иногда меняется.

Кто-нибудь может сказать, пожалуйста, почему и в каком случае это меняется ???

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

jQuery это фантастика!Это ускоряет разработку на стороне клиента, а многочисленные плагины доступны практически для любых нужд.Использование jQuery с Asp.NET Web-Forms ухудшается при работе с вложенными серверными элементами управления.ClientID добавляются при использовании главных страниц ASP.NET.Объекты в JavaScript имеют тенденцию выглядеть следующим образом: ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName Сложность проблемы, описанной выше, заключается в том, что для получения элемента txtName необходимо знать полный «путь».Довольно неприятно ссылаться на объект, используя следующий метод: document.getElementByID ('ctl00_m_g_aaf13d41_fc78_40be_81d5_2f40e534844f_txtName');Это становится большой проблемой при разработке серверных элементов управления или веб-частей, которые могут использоваться в типичном приложении ASP.NET или SharePoint.Вы не можете жестко закодировать путь выше, если не знаете полного пути элемента управления.

К счастью, есть несколько способов обойти это.Есть три, в частности, я упомяну.Первый - это jQuery, эквивалентный стандартному методу JavaScript: document.getElementById ("<% = txtName.ClinetID%>"); "); это можно сделать в jQuery с помощью: $ (" # '<% = txtName.ClinetID%> ");");Второй метод jQuery не требует серверных тегов.Этот метод просматривает все теги и ищет элемент, заканчивающийся указанным текстом.Код jQuery для этого метода показан ниже: $ ("[id $ = '_ txtName']");Есть, конечно, недостатки обоих методов выше.Первый быстрый, но требует тегов сервера.Это быстро, но выглядит просто грязно.Кроме того, он не будет работать с внешними файлами сценариев.Второй вариант - чистый, но он может быть медленным.Как я уже говорил ранее, есть несколько других альтернатив, но именно эти две я использую чаще всего.

Третий регистратор Javascript в коде C # позади.

Page.ClientScript.RegisterStartupScript(GetType(), "saveScript",

String.Format("function EnableSave( isDisabled )"+

"{{ var saveButton = document.getElementById(\"{0}\");"+

"saveButton.disabled=isDisabled;}}", btnSave.ClientID), true);

Не забудьте вызвать этот скрипт после загрузки элементов управления, то есть после Controls.Add ();в методе CreateChildControls при разработке веб-частей.

0 голосов
/ 26 июля 2012
ListBox1.Attributes.Add("onmouseup",
    "document.getElementById('" + base.ClientID + "_" + lbnFilter.ClientID + "').style.display='block';");
0 голосов
/ 15 июня 2012

$ ('input [title = "Name"]')

Посмотрите на источник страницы и получите значение свойства title - работает каждый раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...