在回发上获取asp.net控件的旧值

时间:2010-02-09 03:02:23

标签: asp.net viewstate

我希望能够在不依赖事件的情况下(例如OnTextChange事件)找到asp.net控件的旧值(文本框,复选框等)。像“someTextboxControl.OldText”这样的东西将是完美的!我想它存储在viewstate中,需要通过自定义控件以某种方式获取它。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

Shrage提供的答案很有帮助,但需要进行一些额外的搜索才能使此解决方案正常工作。我将他的代码放在我正在处理的页面的命名空间中的代码中。另外,我必须注册控件,并更改相关控件的更新。

注册扩展的textboxex控件;这就在页面指令

的正下方
    <%@ Register TagPrefix="group" Namespace="ESM_Web_Portal" Assembly="ESM Web Portal" %>

更新要在aspx页面中扩展的texbox

    <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;
        }
    }

答案 1 :(得分:0)

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);
        }

    }