Получение старого значения элемента управления asp.net при обратной передаче - PullRequest
0 голосов
/ 09 февраля 2010

Я хочу иметь возможность найти старое значение элемента управления asp.net (текстовое поле, флажок и т. Д.), Не полагаясь на события (например, событие OnTextChange). Что-то вроде «someTextboxControl.OldText» было бы идеально! Я представляю, что он хранится в viewstate и нужно как-то получить его с помощью пользовательского элемента управления. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 26 ноября 2012

Ответ, предоставленный Shrage, оказался полезным, но потребовался дополнительный поиск, чтобы это решение работало. Я поместил его код в код позади пространства имен страницы, над которой работал. Кроме того, мне пришлось зарегистрировать элемент управления и изменить его обновление.

Зарегистрировать расширенный контроль textboxex; это идет прямо под директивой страницы

    <%@ Register TagPrefix="group" Namespace="ESM_Web_Portal" Assembly="ESM Web Portal" %>

Обновите текстовое поле, которое вы хотите расширить на странице aspx

    <group:TextBoxEx ID="txbEditPartNumber" runat="server" Text='<%# Bind("part_number") %>'></group:TextBoxEx>

Тогда в коде позади я смог использовать расширенный элемент управления TextBox

    protected void CheckForExistingPartNumber(object sender, ServerValidateEventArgs e)
    {
        CustomValidator cv = ((CustomValidator)sender);
        TextBoxEx tb = (TextBoxEx)cv.Parent.FindControl(cv.ControlToValidate);

        if (SupplyBLL.GetSupplyByPartNumber(e.Value) != null && tb.Text != tb.OldText)
        {
            e.IsValid = false;
        }
    }
0 голосов
/ 14 мая 2010
public class TextBoxEx:System.Web.UI.WebControls.TextBox
    {
        public string OldText { get; set; }


        protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
        {
            OldText = Text;
            return base.LoadPostData(postDataKey, postCollection);
        }

    }
...