Eddi Rae Ответов: 2

Updatepanel - необходимо обновить текстовое поле несколько раз после button_click


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

Что я уже пробовал:

Вот мой код

<div class="w3-row-padding  w3-center w3-mobile">            
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:Button ID="cmdSubmit" runat="server" Text="Create Life Budget" CssClass="w3-button w3-black" Font-Bold="False" UseSubmitBehavior="False" />
    <br />
    <br />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:TextBox ID="txtProgress" runat="server" Text="300" BackColor="Transparent" BorderStyle="None" CssClass="w3-center" ReadOnly="True" Width="300px" AutoPostBack="True"></asp:TextBox>
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="cmdSubmit" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
</div>


Protected Sub cmdSubmit_Click(sender As Object, e As EventArgs) Handles cmdSubmit.Click
    Master.HideMsg()
    CreateLifeBudget()
End Sub

Protected Sub CreateLifeBudget()
    '< Other Code>
    txtProgress.Text = "Processing " & iProgress & " of " & iProgressMax
    UpdatePanel1.Update()

    txtProgress.Text = "Processing " &amp; iProgress &amp; " of " &amp;    iProgressMax
    UpdatePanel1.Update()
End Sub


Я не получаю ничего, чтобы появиться на странице. Поскольку я вставил код в этот вопрос, Может ли быть так, что фактический код находится внутри другой подпрограммы? Я даже попробовал это сделать, когда субмарина была публичной.

Vincent Maverick Durano

Если вы хотите стать "настоящим" веб-разработчиком, то мой совет-избавиться от UpdatePanel и использовать AJAX вместо асинхронных обновлений.

2 Ответов

Рейтинг:
2

Maciej Los

Похоже, вы хотите запустить процесс в фоновом режиме...

Взгляните сюда:
Как запустить фоновые задачи в ASP.NET - Скотт Хансельман[^]
Фоновые задачи с размещенными службами в ASP.NET ядро | Microsoft Docs[^]


Рейтинг:
2

Member 14916780

Текстовые поля заполняются немного по-другому в updatepanels.

Тогда они не будут обновлять текущее значение, если вы не сосредоточитесь на текстовом поле и не очистите его сначала. Странно, но это работает именно так.

Это с#

Сначала установите фокус и пусто

Текстовое поле 1.Сосредоточить();
TextBox1.Text = строка.Пустой;

Затем установите значения в текстовое поле с атрибутами.Добавь

var value1 = строка.Ячейки[0].Текст;
Текстовое поле textbox1.Атрибутами.Добавить("значение", value1);

Это позволит обновлять ваше текстовое поле так часто, как вам нравится в той же панели обновления


CHill60

"Элемент textbox1.Текст = строка.Empty;" - это обновление текущего значения текстового поля, поэтому то, что вы говорите, на самом деле не имеет смысла. Нет необходимости устанавливать фокус перед изменением значения. TBH OP, вероятно, не проверял isPostBack и значение возвращалось к исходному значению