Почему значение HiddenField сохраняется при обратной передаче, в то время как другие элементы управления теряют свое содержимое?

0

У меня есть GridView которого есть FooterRow, где я использую метки для отображения итогов каждого столбца.

Я обращаюсь к GridView в JQuery, и итоги вычисляются с использованием JQuery и отображаются в FooterRow каждого столбца GridView.

 <asp:TemplateField HeaderText="Age">
    <ItemTemplate>
      <asp:Label ID="lblAge" Text='<%# Eval("Age") %>' runat="server"></asp:Label>
    </ItemTemplate>
    <FooterTemplate>
      <asp:Label ID="lbltotalAge" runat="server"></asp:Label>
    </FooterTemplate>
 </asp:TemplateField>

Но когда я нажимаю кнопку "Отправить" и пытаюсь получить доступ к этим значениям в коде за внутренним нажатием кнопки "Пуск", все значения "Всего" не отображаются и остаются в качестве значения по умолчанию "Нуль".

string totalAge = ((Label)GrdV.FooterRow.FindControl("lbltotalAge")).Text; // always 0

Чтобы преодолеть это, я использовал элементы HiddenField вне GridView, как это было предложено в предыдущем POST.
После вычисления общих значений в функции JQuery я HiddenFields эти значения в соответствующие HiddenFields и успешно получая значения в codebehind.

Мой вопрос, почему это так? Что особенного в скрытых областях?

  • 0
    Возможно, вы использовали панель обновления на странице, и ваше скрытое поле находится внутри шаблона содержимого этой панели обновления. Во время обратной отправки он обновляет значение скрытого поля, так как это элемент управления на стороне клиента.
  • 0
    <asp:Label> - это просто текст, а не элемент управления. Вы можете узнать, проверив выведенный исходный HTML-код.
Теги:

1 ответ

2
Лучший ответ

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

Другие элементы управления, которые не отображаются в качестве элементов управления вводом, не могут возвращать их значение, а asp.net сохраняет предыдущее значение на странице просмотра страницы, что снова является скрытым элементом управления вводом, который хранит эти данные и возвращает их обратно. Итак, после сообщения назад, в коде asp.net декодируйте состояние представления и дайте значения этим элементам управления.

Например, TextBox визуализируется как управление вводом, Literal - нет.

  • 0
    является ли их альтернативой использованию hiddenfields /
  • 0
    @mhasan Любой тип элемента управления вводом - это данные поста, например, TextBox отображается на элементе управления вводом. Посмотрите типы: dev.w3.org/html5/markup/input.html
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню