Я пытаюсь изменить видимость пары элементов управления сервером (в частности, LinkButton и Label), которые вложены внутри части ItemTemplate ретранслятора во время события onclick того же LinkButton. Я на самом деле уже нашел решение, но я не понимаю, почему он работает, а не так, как я пытался раньше. То, что я пытался первоначально выглядит следующим образом:Почему FindControl не работает с моим ретранслятором?
Вложенные внутри ItemTemplate ретранслятора
<asp:LinkButton ID="lnAdd" CommandArgument='<%#Eval("index") %>' runat="server" Text="Add" OnClick="lnAdd_Click"> </asp:LinkButton>
<asp:Label Visible="false" runat="server" ID="videoAdded" Text="Video Added"></asp:Label>
Тогда внутри этой функции lnAdd_Click у меня есть:
Repeater1.FindControl("lnAdd").Visible = false;
Repeater1.FindControl("videoAdded").Visible = true;
где Repeater1 является идентификатором репитера, в котором находятся эти элементы управления. Это, кажется, ничего не делает (хотя оно компилируется). Я предполагаю, что это потому, что по какой-то неизвестной причине эти элементы управления не найдены.
Что работа является последним ответом на следующий вопрос: Server controls in an asp.net repeater
Решение, кажется, делать что-то очень похожее, что я пытался сделать. Его даже использует FindControl на повторителе. Единственное отличие (я вижу) состоит в том, что он получает ретранслятор через объект-отправитель. Хм, на самом деле, теперь, когда я думаю об этом, идентификатор элементов изменяется на .Net до некоторого nonesense, например, ctl00_ContentPlaceHolder1_Repeater1_ctl02_lnAdd
, когда это действительно выполняется, поэтому, возможно, поэтому его не находит. Но в то же время, в рабочем решении я просто даю обычный идентификатор, например «lnAdd». Является ли .Net автоматическим переводом? Зачем это делать для этого решения, а не из-за того, как я пытался это сделать изначально?
Во всяком случае, я чувствую, что есть что-то фундаментальное здесь, что я не совсем схватывание и был бы признателен за просветление: D
Спасибо за ответ, ваш метод также работал, но меня больше интересовало, почему то, что я пробовал, потерпело неудачу, и метод, который я представил, работал. Тем не менее, спасибо за ответ! – Trajanus