VeecoTech
VeecoTech

Reputation: 2143

Pass in class object to usercontrol

Hi how do i pass in a class object from UI Form to the user control datagridview?

I created a user control which it has a datagridview, a search textbox on top of datagridview, and a label to show total count. and i would like to have the following feature to be written in that control.

I would like the above features to be written in Usercontrol as i felt it is redundant to repeat that in UI Form. For this, I created a datasource in the usercontrol

 public object Datasource { get; set; }

1) If my class object is e.g. User, how do i get the type of the datasource converted to User and get the Count of total User and bind to the label in the usercontrol?

2) I felt it redundant to write this below in every form. How do i simplify this and make this run in the userControl itself by using the datasource i pass in to it.

 private void BaseCRUDForm_GridViewTextChangedSearch(object sender, EventArgs e)
    {            
        if (sender.ToString().Length > 0)
        {
            Users = Users.Where(x => x.Name.StartsWith(sender.ToString())).ToList();
        }
        else
        {
            Users = Repository.UserRespository(false).GetAllUsers();
        }
        UserBindingSource.DataSource = Users;
    }

Please advice.

Upvotes: 0

Views: 1798

Answers (1)

Pankaj
Pankaj

Reputation: 10095

While creating the object of user control, There are two ways to forward the data in user control

  1. Initialize the property. The Property will have the object type which can be cased later while binding to grid.

  2. pass the data to constructor.

I feel that you should have constructor i.e point 2.

Now after casting this object, you can populate the label as well as the grid.

I hope this will help you.

Upvotes: 1

Related Questions