2012-05-31 37 views
2

我試圖用一個序列化的字典將所有控件保存從一個Web窗體(控件 - 字符串,controlValue - 字符串)。接下來,我想反序列化該字典並動態地用它們的值填充控件。C#調用事件處理程序動態

的問題是,我的一些管制已經自動回真實,還事件處理程序。 有沒有辦法動態調用這些事件處理程序?我想通過控件的ID來避免另一個開關。

例:

foreach (KeyValuePair<string, string> kvp in dict) 
{ 
    Control c = findControlRecursive(Page, kvp.Key); 
    if (c != null) 
    { 
     switch (c.GetType().Name) 
     { 
      case "TextBox": 
       ((TextBox)c).Text = kvp.Value; 
       if (((TextBox)c).AutoPostBack) ....... 

編輯:

比方說,我有10種不同的形式。每個都有大約50個控件。我想添加/編輯一組數據。我試圖避免在每個控件的列的數據庫中的表,這就是爲什麼我想要使用序列化。

+0

所有這些控件和它們的值提供給您的回傳呢? – IrishChieftain

+0

是的...我從數據庫中檢索序列化的字典,我反序列化它... –

回答

0

我發現它後...我一直在尋找:

如果(((文本框)C).AutoPostBack)(C爲IPostBackDataHandler).RaisePostDataChangedEvent();

1

從我的角度來看你試圖重塑車輪。 ASP.NET提供WebUserControl類,它可以在不同的頁面上使用,並作爲一組控件的容器。您可以爲這些控件定義事件處理程序,並且它們將被適當調用,無論您使用的是哪個頁面。

所以,我會建議你使用WebUserControl基礎的方法不序列化/反序列化的控制。這是一個簡單而有效的解決方案。

+0

這種形式/頁面有很多控件...我想將它們的值保存在數據庫中,然後加載它們,但不創建表,每列有列... –

+0

好的,如果是這樣,UserControl是一種方法。您可以手動設置控制值,並且事件可以正常工作:)。你應該保留所有的控件在UserControl上。 – platon

+0

K,我要看看 –