2012-07-22 7 views
0

일부 검색 기능이있는 사용자 정의 컨트롤이 있고 그리드가 포함 된 컨트롤도 있습니다. 표가있는 컨트롤에는 검색 컨트롤에서 보고서를 채우기 위해 필요한 일부 항목을 검색하는 모든 기능이 있습니다.다른 컨트롤에서 함수 호출

내 질문에, 그리고 이것에 대해 읽었지만 어떻게 작동하게하는지 잘 모르겠다. 나는 컨트롤 B에서 함수를 호출하는 이벤트 처리기를 등록해야한다는 것을 알았다. 어떻게 작동합니까?

제어 B에 전화해야하는 기능이 있습니다. GetAllItemsByRegistrantID(int id). 제어 A에서이 기능을 호출하려면 어떻게해야합니까?

정말 이에 대한 도움이나 조언을 부탁드립니다.

감사합니다.

+0

둘 다 사용자 정의 컨트롤입니까? – Bert

+0

예,이 질문에 감사드립니다. 언급하지 않았습니다. – user710502

+0

이 질문에 대한 대답은 맞춤 이벤트를 정의하는 방법을 알려주고 페이지에서 처리기를 연결해야합니다. http://stackoverflow.com/questions/3998479/explain-code-for-custom-event-in-user-control – Bert

답변

3

Here is an example if you had to do it using events.

.

public partial class UserControl1 : System.Web.UI.UserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    public event EventHandler<MyCustomeEventArgs> MyCustomClickEvent; 

    protected virtual void OnMyCustomClickEvent(MyCustomeEventArgs e) 
    { 
     if (MyCustomClickEvent != null) 
      MyCustomClickEvent(this, e); 

    } 

    public void button1_Click(object sender, EventArgs e) 
    { 
     OnMyCustomClickEvent(new MyCustomeEventArgs(5)); 
    } 

} 
public class MyCustomeEventArgs : EventArgs 
{ 
    public MyCustomeEventArgs(int searchID) 
    { 
     SearchID = searchID; 
    } 
    public int SearchID { get; set; } 

} 

격자를 사용하여 사용자 정의 컨트롤에서 처리기를 정의하십시오.

public void HandleCustomEvent(object sender, MyCustomeEventArgs e) 
{ 
    GetAllItemsByRegistrantID(e.SearchID); 
} 

public void GetAllItemsByRegistrantID(int id) 
{ 
    Label1.Text = id.ToString(); 
} 

둘 다 살고있는 페이지에서 함께 연결하십시오.

protected void Page_Load(object sender, EventArgs e) 
{ 
    UserControl1Instance.MyCustomClickEvent += UserControl2Instance.HandleCustomEvent; 
} 
+0

너무 늦었으므로 너무 명확하게 생각하지는 않지만이 경우 UserControl1 및 UserControl2는 클래스 자체를 참조하고 페이지의 클래스 인스턴스는 참조하지 않습니다. – Graymatter

+0

아니, 그게 컨트롤의 인스턴스를 클래스와 같은 이름으로 지정했다. 해답을 명확하게하기 위해 그것을 수정하겠습니다. – Bert

+0

그레이트 버트 (Great Bert), 당신의 분명한 설명을 진심으로 감사드립니다. 감사합니다. – user710502

0

나는 이런 종류의 상황을 피하려고합니다. 이런 종류의 코드를 클래스에 넣고 두 컨트롤간에이를 공유해야합니다. 첫 번째 사용자 컨트롤 (검색 제어) 사용자 정의 이벤트를 정의에

+0

옵션이 없다고 가정 해 봅시다.이 코드는 이미이 방법으로 사용되고 있으며 커밋해야합니다. 나는 무엇을 말 했는가, 나는 아직도 이것을 어떻게해서 좋은가? – user710502

+0

방금 ​​왜 이것이 좋은 생각이 아니며 단지이 설명으로 내 돛에서 바람을 불어 넣었던 이유를 설명하는 덧셈 텍스트를 입력했습니다. :) 컨트롤 중 하나의 인스턴스를 다른 인스턴스에 연결해야합니다. 프로그래밍 방식으로 컨트롤을 만드는 것이 가장 쉽습니다. – Graymatter