2013-09-04 5 views
1

Вот моя страница сниппет:Как ссылаться на родительский элемент в DOM на странице ASPX?

... 
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> 
    <table> 
    <tr> 
     <td> 
     <asp:TextBox MaxLength="255" ID="myTextBox" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
    </table> 
</asp:Content> 
... 

А вот страница кода за шт:

... 
Control parent = this.myTextBox.Parent; //this is acutally asp:Content control 
string parentID = parent.ID; //this is PlaceHolderMain 
... 

Что мне нужно ссылаться на <td> элемент (потому что я хочу, чтобы изменить это Visibility свойство). Как я могу это достичь? Где я так ужасно ошибался? :)

+0

Вы не ошибетесь. Вы просто не пошли :-). См. Мой ответ –

+0

Правда, ха-ха! – Boris

+0

мы можем сделать это без тега сервера? потому что я не могу изменить сетки всего приложения. Мне нужно получить последний текстовый ящик в сетке и применить к нему некоторый JS-код, но иногда сетка имеет последнее текстовое поле, скрытое css, примененное к . см. мне нужно проверить, если он скрыт или нет, тогда примените JS к нему. –

ответ

0

Добавить атрибут runat в <td> тег, как и другие пользователи.

<td id="mytd" runat="server"> 
    <asp:TextBox MaxLength="255" ID="myTextBox" runat="server"></asp:TextBox> 
</td> 

Тогда в C# стороне (страницы обратно)

добавить этот файл заголовка

using System.Web.UI.HtmlControls; 
protected void Button_click(object sender,EventArgs e) 
{ 
    mytd.Attributes.Add("style","visibility:none"); 
} 
+0

Спасибо Субин Джейкоб! Поскольку все ответы правильные, я решил одобрить ваш ответ, потому что у вас есть наименьшее количество очков :) – Boris

1

td должен быть запущен на стороне сервера для доступа к нему и классифицирован как родительский элемент.

<td id="td" runat="server"> 
    <asp:TextBox MaxLength="255" ID="myTextBox" runat="server"></asp:TextBox> 
</td> 
0

Таблица здесь представляет собой таблицу html, не относящуюся к серверному элементу ASP.NET. Таким образом, вы не можете получить к нему доступ в коде.

Используйте этот случай:

<asp:Table ID="Table1" runat="server"> 
      <asp:TableRow ID="TableRow1" runat="server" ForeColor="Teal"> 
       <asp:TableCell> 
        <asp:TextBox MaxLength="255" ID="myTextBox" runat="server"> 
        </asp:TextBox> 
       </asp:TableCell> 
      </asp:TableRow> 
</asp:Table> 
1

ASPX код позади действительно знает только об элементах управления ASP (то есть те, с осины: префикс в тегах) ТД это просто старый HTML. Для того чтобы код позади взаимодействовал с ним, вам нужно будет добавить runat = "server" на тег

Смежные вопросы