DCSIMG
חשיפה של אירועים מתוך UserControl לרישום מתוך הדפים - שלמה גולדברג (הרב דוטנט)

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

חשיפה של אירועים מתוך UserControl לרישום מתוך הדפים

 

בתפוז נשאלה שאלה: איך ניתן לחשוף אירועים של פקדים שנמצאים בתוך UserControl כדי שיוכלו להירשם אליהם מתוך הדפים.
אפשר לחשוב האם זה נכון לעשות את זה או לא, אבל במידה ומגיעים למסקנה שצריך לעשות את זה - עושים את זה בצורה הבאה:
 
נניח שיש לנו UserControl שיש לו לחצן ואנחנו רוצים לחשוף את אירוע OnClick שלו כדי שיוכלו להירשם אליו.
ה - UserControl יראה כך:
 

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs"

    Inherits="WebApplication32.WebUserControl1" %>

 

<asp:Button ID="Button1" runat="server" Text="Button" />

 
צורה אחת היא להגדיר את הלחצן כ - Public ואז יהיה ניתן להירשם לאירועים שלו מקוד - אני חושב שהדרך הזאת אינה נכונה כי גם אם מגיעים למסקנה שרוצים לחשוף אירוע - לא מומלץ לחשוף את כל האובייקט, תמיד כדאי לחשוף רק מה שצריך, ולכן נכתוב את הקוד הבא (ב - UserControl)
 

public event EventHandler ButtonOnClick

{

    add

    {

        Button1.Click += value;

    }

    remove

    {

        Button1.Click -= value;

    }

}

 
הקוד הזה הינו למעשה חשיפה של האירוע (כמו משתנה ומאפיין).
 
כעת בדף שבו גוררים את ה - UserControl אפשר לכתוב את הקוד הבא:
 

<div>

    <uc1:WebUserControl1 ID="WebUserControl11" runat="server"

        OnButtonOnClick="ButtonOnClick_Click" />

</div>

 
כשלמעשה המאפיין OnButtonOnClick הוא האירוע החדש שיצרנו עבור ה - UserControl

תוכן התגובה

משה כתב/ה:

כבוד גדול הוא בשבילי שאתה מקדיש פוסט לשאלה שלי.

מסתבר שבמקרה שלי זה קצת יותר מסובך,

עוד לא הצלחתי לגרום לonItemCommand להופיע ברשימת אירועים של הפקד,

אבל בהחלט התעודדתי כשראיתי שהדבר אפשרי

תודה רבה, תבורך מנשים ומגברים

# October 11, 2009 11:51 PM

משה כתב/ה:

יש ! זה עובד! תודה רבה

# October 12, 2009 12:23 AM

dnvntr כתב/ה:

פה!-קל ופשוט תמיד עשיתי את זה הרב יותר מסובח

# October 12, 2009 12:33 AM

Gil Fink on .Net כתב/ה:

Back to Basics – Exposing UserControl Events This morning I saw Shlomo ’s post ( in Hebrew ) that&#160;

# October 12, 2009 8:53 AM

יוסי גולדברג כתב/ה:

יפה מאוד! לא ידעתי שיש syntax מיוחד לחשיפה של events.

# November 1, 2009 4:21 PM
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 2 and 6 and type the answer here:


Enter the numbers above: