2010-02-09 2 views
0

이벤트 (예 : OnTextChange 이벤트)에 의존하지 않고 asp.net 컨트롤 (텍스트 상자, 체크 박스 등)의 이전 값을 찾을 수 있기를 원합니다. "someTextboxControl.OldText"와 같은 것이 완벽 할 것입니다! 나는 그것이 viewstate에 저장되어 있고 어떻게 든 커스텀 컨트롤을 통해 그걸 가져올 필요가 있다고 상상한다. 어떤 아이디어?포스트 백에서 asp.net 컨트롤의 이전 값 얻기

답변

3

Shrage가 제공 한 대답이 도움이되었지만이 솔루션이 작동하려면 몇 가지 추가 검색이 필요했습니다. 나는 작업중인 페이지의 네임 스페이스 안에 코드를 삽입했다. 또한 컨트롤을 등록하고 문제의 컨트롤을 변경해야합니다.

확장 된 텍스트 박스 컨트롤 등록; 이 오른쪽 페이지 지시문

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

업데이트 나 확장 된 TextBox 컨트롤을 사용할 수 있었다 뒤에 당신이 aspx 페이지 코드에서 다음

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

에서 확장 할 texbox 이하가

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

    } 
관련 문제