Interoperation between custom controls

Posted by Community Admin on 03-Aug-2018 08:41

Interoperation between custom controls

All Replies

Posted by Community Admin on 26-Apr-2011 00:00

Hi! I use ASP.NET Server Control Library to develop custom controls for sitefinity.
It looks like this:

Both controls are inherit from SimpleView and use LayoutTemplateName from "Resources.Views". This works fine.
Control1 has a Label control:
        protected virtual Label Label1
       
            get
           
                return base.Container.GetControl<Label>("Label1", true);
           
       
Control2 has TextBox and Button controls:
        protected virtual TextBox TextBox1
       
            get
           
                return base.Container.GetControl<TextBox>("TextBox1", true);
           
       
        protected virtual Button Button1
       
            get
           
                return base.Container.GetControl<Button>("Button1", true);
           
       

Please, explain me how can I interop between these controls. For example, on Control2.Button1.Click Control1.Label1.Text should be changed to value of Control2.TextBox1.Text.

I do next,
On Control2.cs:
    public delegate void Control2ChangedEventHandler(object sender, Control2ChangedEventArgs e);
    public class Control2ChangedEventArgs : EventArgs
   
        private string _text;
        public Control2ChangedEventArgs(string text)
       
            _text = text;
       
        public string ChangedText
       
            get return _text;
       
   
    public event Control2ChangedEventHandler Changed;
    protected override void InitializeControls(GenericContainer container)
   
        this.Button1.Click += new EventHandler(Button1_Click);
   
    void Button1_Click(object sender, EventArgs e)
   
        if (Changed != null) Changed(sender, new Control2ChangedEventArgs(this.TextBox1.Text));
   

On Control1.cs:
   // Declaration of Сontrol2
   protected Control2 _control2;
        protected override void InitializeControls(GenericContainer container)
       
            this._control2 = (Control2)this.Page.FindControl("Control2");
            this._control2.Changed += new Control2ChangedEventHandler(_control2_Changed);
       

        void _control2_Changed(object sender, Control2ChangedEventArgs e)
       
            this.Label1.Text = e.ChangedText;
       

But I've got an "Object not reference to instance of an object" error using FindControl method to find Control2 instance. How can I find it? May be there are other ways of interoperation between custom controls?

Thanks in advance for your help,
Vladislav.

Posted by Community Admin on 26-Apr-2011 00:00

Hi Vladislav,

Use a query string value. When you click the button append a query string key in the url and read this value from the second control.

Regards,
Ivan Dimitrov
the Telerik team


This thread is closed