updatepanel проблема или возможная ошибка
У меня есть TextBox
(многострочный) и Label
в UpdatePanel
, которые я обновляю с помощью javascript __doPostBack(upEditReminder,id);
Затем я устанавливаю как Label
, так и TextBox
текст в текущее время.
protected void upReminder_Onload(object sender, EventArgs e)
{
lbTest.Text = DateTime.Now.ToString();
tbReminder.Text = DateTime.Now.ToString();
Проблема в том, что Label
обновляется, но TextBox
Дата обновляется только один раз, когда страница загружается, но не при запуске __doPostBack(upEditReminder,id);
.
Я не могу понять, в чем проблема.
Я также пробовал textarea runat="server"
, но у меня все та же проблема.
5 ответов:
Это сработало для меня... это отличается от того, что вы делаете?
Фрагмент кода Aspx:
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"></asp:TextBox> </ContentTemplate> </asp:UpdatePanel> <a href="#" onclick="__doPostBack('UpdatePanel1','');">Update</a>
Фрагмент кода:
protected void UpdatePanel(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToString(); TextBox1.Text = DateTime.Now.ToString(); }
Щелчок по ссылке "обновить" запускает обратную связь UpdatePanel, которая обновляет ее через ajax, и как метка, так и textarea получают обновленную метку времени.
Вы устанавливаете текстовое поле TextBox в любом другом месте кода? Я предполагаю, что он где-то переписывается...
Добавьте кнопку внутри панели обновления. Нажмите на кнопку, она обновляет как ярлык, так и текстовое поле?
Кроме того, вызов, который вы делаете, должен иметь ClientID панели updatepanel, который выглядит примерно так:
_ _ doPostBack ("ctrl00_ctrl01_upEditReminder",");
Из одного из ваших комментариев я заметил, что вы пытаетесь обновить текстовое поле за пределами панели обновления. Проблема здесь заключается в том, что вы не можете обновить что-то вне updatepanel в postback панели updatepanel. Это один из недостатков использования панели обновления.
Если вы все еще хотите использовать updatepanel, я предлагаю вам обновить элементы другой страницы с помощью javascript и preferrable jQuery после перезагрузки updatepanel. Вы можете использовать скрытое поле ввода внутри панель обновления для передачи данных. Чтобы обновить текстовое поле после обновления, можно использовать следующий код JavaScript/jQuery:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () { var reminder = $("[id$='hidReminder']").val(); $("[id$='tbReminder']").val(reminder); });