Вопрос

Я использую ASP net Ajax toolkit и у меня есть GridView в пределах UpdatePanel, все работает нормально.

Когда я пытаюсь запустить некоторые JQuery в таблице, которая должна быть сгенерирована, нет никаких признаков GridView (или таблица HTML) в возвращаемом DOM-файле.Я предполагаю, что все это делается с помощью ASP generated Javascript?

Как я могу выполнять какие-либо действия с GridView это лежит в пределах UpdatePanel?

Это было полезно?

Решение

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

Другие советы

Если вы можете сгенерировать свой javascript в codebehind, в Page_Load для настойчивости, тогда вы можете ввести свой GridView1.ClientID и т.д. В свой javascript.(Например, здесь я использую текстовое поле, но оно следует той же концепции.)

protected void Page_Load(object sender, EventArgs e)
{
    string js = "$(document).ready(function(){$(\"#" + this.TextBox1.ClientID + "\").text('hello world');});";
    HtmlGenericControl script = new HtmlGenericControl("script");
    script.Attributes.Add("type", "text/javascript");
    script.InnerHtml = js;
    Page.ClientScript.RegisterStartupScript(this.GetType(), "key", js, true);
}

Есть три решения этой проблемы, которые я могу придумать.Первый, вводящий javascript с сервера с помощью ClientID, как предлагает Дейв, работает, но очень быстро становится очень запутанным.Я делал это некоторое время, но такая тесная связь на стороне сервера и клиента вызывает проблемы.

Второй способ заключается в предоставлении другого способа идентификации сущностей, такого как css-класс.Это лучше, чем первый вариант, но оставляет вас с большим количеством посторонних определений классов, которые вы должны соблюдать.

Решение, которое я предпочитаю, - использовать фреймворк JavaScript, такой как jQuery, который имеет механизм селекции.Таким образом, вы можете обойти мусор UniqueID с помощью некоторого умного выделения и обхода DOM.

Допустим, у вас есть элемент управления с именем MyControl.ASP.Перед этим Net сгенерирует огромное пространство имен, поэтому при рендеринге не будет никаких конфликтов идентификаторов.Но вы можете выбрать каждый MyControl, выполнив команду $('[id$=MyControl]'), которая выбирает каждый объект с идентификатором, заканчивающимся на MyControl.Вероятно, есть аналогичные способы сделать это в других фреймворках, но я недостаточно знаком с ними, чтобы привести пример.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top