2014-09-22 46 views
0

我嘗試在我的網站上開發動態創建的工具箱控件,我需要儘可能提高效率。 我有兩個條件如下所示:將工具箱控件作爲參數傳遞給方法#

private void produceControls() 
{ 
    if (General.survey_answer_type_id == 3) 
     { 
      rbtnList = new RadioButtonList(); 
      rbtnList.ID = "ControlID_3"; 
      SqlDataReader dr_answer = cmd.ExecuteReader(); 
      while (dr_answer.Read()) 
      { 
       rbtnList.Items.Add(dr_answer["answer"].ToString()); 
      } 

      PlaceHolder1.Controls.Add(rbtnList); 
     } 
    else if (General.survey_answer_type_id == 4) 
     { 
      chkBoxList = new CheckBoxList(); 
      chkBoxList.ID = "ControlID_4"; 
      SqlDataReader dr_answer = cmd.ExecuteReader(); 
      while (dr_answer.Read()) 
      { 
       chkBoxList.Items.Add(dr_answer["answer"].ToString()); 
      } 
      PlaceHolder1.Controls.Add(chkBoxList); 
     } 
} 

這些條件除了工具箱控件名稱本身相同。我必須聲明爲適當的條件下使用的方法(這只是一個抽象的):

public void foo(var toolbox_name) 
{ 
     toolbox_name = new RadioButtonList(); 
     toolbox_name.ID = "ControlID_3"; 
     SqlDataReader dr_answer = cmd.ExecuteReader(); 
     while (dr_answer.Read()) 
     { 
      toolbox_name.Items.Add(dr_answer["answer"].ToString()); 
     } 
} 

然後我想用它喜歡:

private void produceControls() 
    { 
     if (General.survey_answer_type_id == 3) 
      { 
       foo(rbtnList); 
      } 
     else if (General.survey_answer_type_id == 4) 
      { 
       foo(chkBoxList); 
      } 
    } 

我怎麼能做到這一點? 謝謝。

+0

'公共無效美孚(VAR toolbox_name)'你熟悉傳遞一個參數爲'Control' – MethodMan 2014-09-22 16:06:07

+0

你熟悉與'發件人'以及如何獲取發件人的控件名稱..?我認爲你比第一個代碼示例中顯示完整的方法簽名要困難得多,這個'chkBoxList = new CheckBoxList();'在方法範圍外是不可見的,所以在類中聲明它可能是一個'公共靜態chkBoxList = new CheckBoxList();' – MethodMan 2014-09-22 16:14:08

+0

在這個'private void produceControls()'中改變你的方法簽名,把一個Control作爲參數。我會在一些我需要解決的東西生產服務器 – MethodMan 2014-09-22 16:32:25

回答

0

我只需要知道CheckBoxlistRadioButtonList的父級是什麼。這只是ListControl

例如:

public void showListControl(ListControl lstcontrol) 
{ 
     lstcontrol.ID = "ControlID_3"; 
     SqlDataReader dr_answer = cmd.ExecuteReader(); 
     while (dr_answer.Read()) 
     { 
      lstcontrol.Items.Add(dr_answer["answer"].ToString()); 
     } 
} 

,然後用它喜歡:

RadioButtonList rbtnList = new RadioButtonList(); 
showListControl(rbtnList); 
相關問題