2011-06-17 2 views
4

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

<asp:UpdatePanel runat="server" id="updatepanel1" UpdateMode="Conditional" onload="updatepanel1_Load" ChildrenAsTriggers="false"> 
<ContentTemplate> 
<asp:HiddenField id="sendingRequest" runat="server" Value="0" /> 
.... 
</ContentTemplate> 
</asp:UpdatePanel> 

У меня также есть некоторые JavaScript на моей странице, которая делает это, чтобы вызвать обновление из UpdatePanel: в настоящее штраф до

var sendingRequest = document.getElementById("<%=sendingRequest.ClientID%>"); 
sendingRequest.value = "1"; 
__doPostBack('<%= updatepanel1.ClientID %>', ''); 

Все работает, но в моем случае updatepanel1_Load, я пытаюсь установить значение обратно на "0":

sendingRequest.Value = "0"; 

Это значение никогда не обновляется и не возвращается к 0 на клиенте после обратной передачи, и я не могу понять, почему!

Может ли кто-нибудь помочь? Спасибо

+0

Возможный дубликат [ASP.NET получает значение скрытого поля после частичной обратной передачи ...] (http://stackoverflow.com/questions/6379455/asp-net-getting-a-hidden-fields-value- после-частичной обратной передачи) –

+0

это не дубликат .. Это была проблема с получением значения скрытого поля при динамическом создании его в коде на стороне сервера. Здесь моя проблема в том, что значение скрытого поля не обновляется при создании клиентской стороны в контейнере UpdatePanel ContentTemplate – Jimmy

+0

, вы уверены, что не вернулись к 1 (или загружены из окна просмотра) после того, как вы установили его обратно на 0 на сервере? – Jaime

ответ

4

Если у вас возникли проблемы со скрытым полем, вы можете использовать TextBox вместо этого. Скройте текстовое поле с помощью css (display: none;), чтобы получить аналогичные результаты для скрытого поля. Его не совсем красиво, но его работоспособное обходное решение.

+0

Я знаю, что это старый поток. Я просто хочу поделиться своим решением. Просто добавьте значение в свойство 'YourCtrl.Attributes [" yourattname "]' для любого элемента управления, в котором включено состояние просмотра, и оно должно работать. – c00000fd

0

Попробуйте вызвать registerstartupscript или что-то подобное со стороны сервера. Я точно не помню имя метода, но его часть объекта страницы. Это зарегистрирует любой javascript, который вы хотите выполнить после обратной передачи на стороне клиента.

+0

, но это не тот javascript, с которым я столкнулся с проблемой ... postback работает нормально. он обновляет значение во время обратной передачи, которая не работает правильно – Jimmy

+0

да, но это не может быть сделано на стороне сервера, оно должно быть на клиенте.Таким образом, после выполнения кода сервера он выплескивает javascript для браузера, а затем устанавливает значение скрытого поля. Надеюсь, это то, что вы ищете. – SoftwareGeek

+0

, так что вы говорите, что мне нужна отдельная функция javascript, чтобы установить значение отправкиRequest на «0» на стороне клиента? но это postback, поэтому я могу просто установить значение с помощью sendRequest.Value = "0"; на стороне сервера? У меня есть доступ к элементу управления requestRequest на сервере. – Jimmy

0

Этот подобный сценарий делается здесь успешно:

http://encosia.com/easily-refresh-an-updatepanel-using-javascript/

Убедитесь, что вы следуете те же шаги, - я не могу видеть весь код. Сначала попробуйте с меткой, чтобы убедиться, что она обновляется как видимый элемент управления. Если это работает, тогда сузите его с помощью скрытого значения, чтобы убедиться, что поведение не отличается для скрытого элемента управления.

+0

Привет, я точно воспроизвел код на этом сайте с помощью HiddenField, и он отлично работает, но когда я пытаюсь отложить его с моей фактической страницы, это не сработает - значение просто не будет обновляться. Я не могу понять, почему, но может быть, это может быть связано с тем, что на странице обновляется обновление UpdatePanel каждые 5 секунд? но я не понимаю, почему это повлияет на то, будет ли обновленная панель с скрытым полем успешно обновляться ..:/ – Jimmy

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