2013-02-25 3 views
2

Я создал таблицу HTML в коде позади и добавил ее к панельным элементам управления на странице ASPX.Как найти динамически созданный элемент управления с помощью Javascript?

Теперь я хочу получить таблицу, используя свой идентификатор в javascript, чтобы реализовать сортировщик таблиц.

$(document).ready(function() { 
     $("myTable").tablesorter(); 
    }); 

это не идентифицирующий MYTABLE управления, который я создал в CodeBehind:

 HtmlTable Table= new HtmlTable();   
     Table.ID = "NavTable"; 

Пожалуйста, помогите мне с этим перепробовал много способов, но ничего не работает.

Заранее спасибо

ответ

2

У вас есть несколько вариантов. Основная идея состоит в том, чтобы выводить ClientID элемента управления в процентах где-нибудь, где вы можете его найти.

Например:

$(document).ready(function() { 
    $("#<%=this.TableControl.ClientID%>").tablesorter(); 
}); 

Или: если вы в ASP.NET 4.5 среде можно установить ClientIDMode = «Static» и просто жёстко его непосредственно в скрипте. Опасайтесь, однако, если вы представите столкновение с ID, ASP.NET пощекотает ваше запястье.

<asp:Grid ClientIDMode="Static" ID="my_static_table_id" /> 
$(document).ready(function() { 
    $("#my_static_table_id").tablesorter(); 
}); 
+0

Спасибо много он работал после того, как я установил ClientIDMode к статическому .. – Divz

1

Ваш пример содержит различные идентификаторы myTable и NavTable. И вы используете неправильный селектор, если хотите выбрать по id. Ваш селектор должен выглядеть так:

$("#NavTable").tablesorter(); 

Таким образом, вы забыли резкое значение селектора.

1

Здесь есть несколько вопросов.

  1. Вы пытаетесь ссылаться на «myTable» на javascript, и вы назвали его «NavTable».

  2. Ссылка на элемент html по идентификатору в jQuery в начале должна рассказать о значении #, чтобы указать jQuery, что селектор является идентификатором, а не тегом html-тега.

  3. Чтобы убедиться, что ASP.NET не использует другой идентификатор в выводе HTML, вы должны получить значение ClientID из объекта на стороне сервера ASP.NET, созданного на C# (может произойти, если объявлено внутри пользовательский элемент управления ASP.NET).

код будет выглядеть следующим образом:

$(document).ready(function() { 
    $("#<%=Table.ClientID%>").tablesorter(); 
}); 

Для этого также необходимо объявить переменную Table в качестве члена в классе, так что дизайн код будет видеть его в рамках. Иначе это доступно только в том методе, который вы его создали.

Если вы знаете, что это всегда будет генерировать фактический идентификатор присвоенным его, вы можете жестко закодировать его в JavaScript, как это:

$(document).ready(function() { 
    $("#NavTable").tablesorter(); 
});