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 3

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 получают обновленную метку времени.

Не могли бы вы попробовать его после установки EnableViewState как false в этом текстовом поле?

Вы устанавливаете текстовое поле 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);
});