2011-05-04 74 views
0

嗨如何將UI對象中的類對象傳遞給用戶控件datagridview?將類對象傳遞給usercontrol

我創建了一個用戶控件,它有一個datagridview,一個位於datagridview之上的搜索文本框和一個顯示總數的標籤。我想要在該控件中編寫以下功能。

  • 顯示綁定到datagridview的該對象的總計數。
  • TextChange事件過濾datagridview中的數據。

我想上面的功能寫在Usercontrol中,因爲我覺得在UI窗體中重複這些功能是多餘的。 對於這一點,我創建一個數據源在用戶控件

public object Datasource { get; set; } 

1)如果我的類對象是例如User,我如何獲得轉換爲用戶的數據源的類型,並獲得總用戶數並綁定到usercontrol中的標籤?

2)我覺得在每種形式下面寫下這些是多餘的。我如何簡化這一點,並通過使用傳遞給它的數據源使其在userControl本身中運行。

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; 
    } 

請指教。

回答

1

在創建用戶控制的對象,有兩種方法在用戶控制

  1. 初始化屬性的數據轉發。該屬性將具有綁定到網格後可以套用的對象類型。

  2. 將數據傳遞給構造函數。

我覺得你應該有構造即2點

現在鑄造這個對象後,就可以填充標籤以及電網。

我希望這會幫助你。

+0

但我如何獲得對象的類型?你能告訴我一個例子嗎? – VeecoTech 2011-05-04 07:28:57

+0

假設以下是通用類。公共類泛型 { public int a; public string str; }假設用戶控制類在公共類Userctl {私人對象aa; public Userctl(object a) {aa = a; }如果(aa.GetType()。Name.Equals(「泛型」)) 泛型g =(泛型)aa; grid.datasource = g; } } }現在在主窗體中填充泛型類泛型數據g = new generics(); g.str =「test1」; g.a = 1; 及以下是用戶控件Userctl c = new Userctl(g)的實例;如有任何混淆,請通知我。 – Pankaj 2011-05-04 07:46:24

+0

您對此有何評論? – Pankaj 2011-05-04 08:17:05