Короткий вопрос: * делает глубокий вдох *
Как я могу добавить ClientID из TableRow внутри Table в PlaceHolder, который находится в UserControl внутри веб-части и добавлен на страницу SharePoint с помощью MasterPage?
Объяснение:
Я создаю пользовательский элемент управления, который динамически показывает элементы SPList, по одному на Web.UI.Table ().2-я строка Table () будет сначала скрыта, с изображением, используемым для инициализации некоторого JavaScript для скрытия / отображения строки в браузере клиентов (вместо использования обратной передачи или ajax - у меня есть причины).
Затем Table () добавляется в PlaceHolder в UserControl, который затем используется веб-частью, и эта веб-часть добавляется на страницу SharePoint, которая, конечно, использует MasterPage.У меня есть реальная проблема при разработке метода JavaScript, чтобы найти ClientID TableRow, учитывая, что он вложен так глубоко.
Мой код .ascx выглядит примерно так ..
<script type="text/javascript">
function showHidden(itemId) {
var controlId = document.getElementById('<%= phDownloadTable.ClientID %>');
//alert(controlId);
document.getElementById(controlId).style.display = (document.getElementById(controlId).style.display == "table-row") ? "none" : "table-row";
}
</script>
<asp:PlaceHolder ID="phTable" runat="server"></asp:PlaceHolder>
и мой код .cs выглядит примерно так ..
Table myTable = new Table();
TableRow hiddenRow = new TableRow();
hiddenRow.ID = "row" + itemId;
hiddenRow.Attributes.Add("style","display: none;");
... create TableCells and add to hiddenRow...
TableRow displayRow = new TableRow();
TableCell toggleCell = new TableCell();
Image toggleImage = new Image();
toggleImage.ImageUrl = "/images/myimage";
toggleImage.Attributes.Add("onclick","javascript:showHidden('" + hiddenRow.ClientID + "');
toggleCell.Controls.Add(toggleImage);
displayRow.Cells.Add(toggleCell);
... create more TableCells and add to displayRow
myTable.Rows.Add(displayRow);
myTable.Rows.Add(hiddenRow);
в результате атрибут "onclick" toggleImage показывает showHidden('row999');
, который передает 'row999' в функцию JavaScript, но я не могу понятьтам, как получить полный clientId TableRow, на который он ссылается.
Источник моей страницы показывает, что clientId равен ctl00_SPWebPartManager1_g_eda9b9e9_4c7a_48e0_a2aa_fd8cdd65de6c_ctl00_row999
, что больше, чем я привык видеть, и, кажется, содержитдве части 'ct100_', предлагающие несколько уровней управления.
Любые идеи будут с благодарностью.Я пробовал все обычные пути (поиск «javascript .net control client id» и т. П., Но пока не нашел ничего полезного. Большинство предлагает document.getElementById('<%= myControl.ClientId %>')...
, что хорошо, но я не знаю,'myControl' - мне нужно это послание от изображения переключения.
Скрещенные пальцы !!
Кевин