2014-10-24 4 views
0

У меня есть <td id="StatusPreview" runat="server"></td> и он получает заполняется функцией Js по:InnerHtml в C#

document.getElementById('StatusPreview').innerHTML = Ext.getCmp('TYComboEdit').getRawValue(); 

Теперь, я хотел бы изменить содержание тд в c#, когда кнопка нажата.

Я создал следующий метод:

protected void hiddentoggletofrenchBackend(object sender, DirectEventArgs e) 
    { 
     this.StatusPreview.InnerHtml = "aaaaa"; 
    } 

Это не меняет содержание на тд. Однако, если я разместил предупреждение после установки InnerHtml, он оповещает aaaaa, хотя содержимое td не изменилось, чтобы отразить это. Если я поставлю предупреждение перед установкой InnerHtml, предупреждение будет пустым.

Как я могу изменить InnerHtml div?

Спасибо!

UPDATE:

Если изменить HTML для <td id="StatusPreview" runat="server">q</td> предупреждения показывает q, если он будет помещен перед установкой InnerHtml, и переключается на aaaaa, если поместить после. Как будто InnerHtml принимает значение на pageload, а не текущее значение.

+0

Я считаю, что это будет 'InnerText' для C#, а не' InnerHtml'. – Greg

+0

это все сделано в форме asp.net? В форме окна есть элемент управления браузером? –

+0

@Mike_G это делается в форме Ext.NET (основанной на asp.net) – starvator

ответ

2

Чтобы обновить элемент управления ASP.NET во время DirectEvent, вы должны вызвать метод .Update().

protected void hiddentoggletofrenchBackend(object sender, DirectEventArgs e) 
{ 
    this.StatusPreview.InnerHtml = "aaaaa"; 
    this.StatusPreview.Update(); 
} 
+0

Именно то, что мне нужно! Спасибо! – starvator

1

Добавление runat=server в элемент td превращает его в элемент управления HtmlTableCell. Соответствующим свойством для установки внутреннего текста этого элемента управления является InnerText.

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

Вам даже нужно сделать обратную передачу для этого? Если «aaaaa» не является заполнителем для того, что станет базой данных или каким-либо другим поиском, я бы превратил альтернативный текст в скрытый div или в некоторый JavaScript и полностью изменил текст на JavaScript.

+0

Я думаю, что я собираюсь сделать то, что вы предложили, и «визуализировать альтернативный текст в скрытый div или в какой-нибудь JavaScript и полностью изменить текст в JavaScript». Спасибо! – starvator

+0

А, кажется, я написал «в». Исправлена. Благодарю. –

+0

Это не решает проблему. Я создал div '

', запустил этот C# 'this.statuspreviewLangName.InnerHtml =" asd ";' then this js 'document.getElementById ('StatusPreview'). InnerHTML = document.getElementById ('statuspreviewLangName'). InnerHTML;' Потому что js не видит измененного div .... Вернуться к квадрату 1 :( – starvator