2009-10-01 2 views
1

.aspx 코드 숨김 외부에있는 사용자 지정 클래스에서 동적 단추를 만들고 있습니다. 사용자 정의 클래스는 Table 객체를 만들고 해당 테이블 내에 Button 열을 생성합니다. 생성 된 테이블은 자리 표시 자 컨트롤에로드됩니다. 이 문제를 제외하고는 모든 것이 잘 작동합니다.asp C# 사용자 지정 클래스의 동적 단추 이벤트

프로그래밍 방식으로 Button 클래스에 '클릭'이벤트를 할당하는 방법은 무엇입니까?

이 결과
MyButton.Click += new EventHandler(MyButtonClick); 

: '이름'MyButtonClick 오류 '현재 컨텍스트에 존재하지 않습니다'.

현재 컨텍스트에는 존재하지 않지만 aspx 페이지가 렌더링되면 코드 숨김에 'MyButtonClick'을 처리하는 메서드가 포함됩니다. 사용자 정의 클래스의 Button 객체에 Click 이벤트 메서드 이름을 저장하고 렌더링 할 aspx 코드 숨김에 전달하는 방법을 모르겠습니다.

+0

맞춤 클래스 란 사용자 정의 컨트롤을 의미합니까? – JustLoren

+0

아니요, 다음과 같은 사용자 지정 클래스 : 공용 클래스 DataSetTableRenderer {} 속성, 메서드 등 ... – Paulj

답변

4

사용자 정의 컨트롤에서 이벤트를 정의해야합니다. .aspx가 처리 할 수 ​​있도록 단추 클릭시 해당 이벤트를 발생시킵니다.

편집 : 동일한 원칙이 맞춤 클래스에 적용됩니다.

제어 코드 숨김 :

protected override void OnInit(System.EventArgs e) 
{    
    control1.ButtonEvent+= 
       new Control1.ButtonEventHandler (whatever_ButtonEvent); 

} 

protected void whatever_ButtonEvent() 
{ 
    //do something 
} 
1

이의이 개념을 가지고 텍스트 상자 및 두 개의 버튼이있는 사용자 컨트롤에 적용하자 뒤에

public delegate void ButtonEventHandler(); 
public event ButtonEventHandler ButtonEvent; 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ButtonEvent(); 
} 

.ASPX 코드 . 사용자 정의 컨트롤은 Gridview 내에 배치됩니다. 내 코드가 실행될 때 이벤트 처리기 메서드의 메서드는 항상 null입니다. 내가 생각하는/버튼이 사실 gridview에있는 사용자 정의 컨트롤에있는 사실을 할 것 같아요.

내 사용자 제어 코드는 다음과 같습니다.

공공 부분 클래스 User_Controls_GridViewFilter : System.Web.UI.UserControl {

public event EventHandler UserControlButtonClicked; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     renderPage(); 
    } 
} 



private void OnUserControlButtonClick() 
{ 
    if (UserControlButtonClicked != null) 
    { 
     UserControlButtonClicked(); 
    } 
} 

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    OnUserControlButtonClick(); 
} 

protected void btnReset_Click(object sender, EventArgs e) 
{ 
    OnUserControlButtonClick(); 
} 

}

나는 영문 페이지에 컨트롤을 등록합니다.

 ((User_Controls_GridViewFilter)gvMapLayer.HeaderRow.FindControl("FilterBox1")).UserControlButtonClicked 
      += new ButtonEventHandler(User_Controls_GridViewFilter_UserControlButtonClicked); 
관련 문제