2014-12-22 4 views
2

usercontrol에서 txtPlanCode의 textchange 이벤트를 트리거하려고하지만 불행히도 내 textchange가 트리거되지 않습니다. 내 코드가 뭐가 잘못 됐어?usercontrol 내 TextBox 텍스트 변경 이벤트

도와주세요 감사합니다 :) 사용자 컨트롤에

//CodeBehind of my page 
protected void ucPlan_OnTextChanged(object sender, EventArgs e) 
{ 
    TxtPlanDesc.Text = Session["PlanDesc"].ToString(); 
} 

//Client side (.aspx) 

<uc2:PlanID ID="ucPlanCode" runat="server" ucPlan_OnTextChanged="ucPlan_OnTextChanged" autopostback="true"/> 

//ucPlanID.ascx.cs 

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

public string PlanID 
{ 
    get 
    { 
     return txtPlanCode.Text; 
    } 
    set 
    { 
     txtPlanCode.Text = value; 
    } 
} 

public bool AutoPostBack 
{ 
    get 
    { 
      return txtPlanCode.AutoPostBack; 
    } 
    set 
    { 
      txtPlanCode.AutoPostBack = value; 
    } 
} 

//ucPlanID.ascx 

<asp:TextBox ID="txtPlanCode" runat="server" CssClass="form-control" MaxLength="20" Enabled="true" Text='<%#Eval("PlanCode") %>' OnTextChanged="txtPlanCode_TextChanged"></asp:TextBox> 
+1

의 AutoPostBack = "true"를'에'추가하여 컨트롤 – Mivaweb

답변

4

: 페이지

public event EventHandler TextChangeEvent; 

    protected void TextBox1_TextChanged(object sender, EventArgs e) 
    { 
     if (TextChangeEvent != null) 
      TextChangeEvent(this, e); 
    } 

<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox> 

:

<script runat="server"> 
protected void Some_TextChanged(object sender, EventArgs e) 
    { 
     // your code here 
    } 
    </script> 
+0

UserControl s 솔루션 위와 같은 작업은 이벤트를 구성 요소의 외부 세계에 노출시키는 상위 컨테이너까지 이벤트를 비 웁니다. 그것은'TextChangeEvent? .Invoke (this, e)'를 사용함으로써 단순화 될 수 있습니다. –