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);
}
}
我怎麼能做到這一點? 謝謝。
'公共無效美孚(VAR toolbox_name)'你熟悉傳遞一個參數爲'Control' – MethodMan 2014-09-22 16:06:07
你熟悉與'發件人'以及如何獲取發件人的控件名稱..?我認爲你比第一個代碼示例中顯示完整的方法簽名要困難得多,這個'chkBoxList = new CheckBoxList();'在方法範圍外是不可見的,所以在類中聲明它可能是一個'公共靜態chkBoxList = new CheckBoxList();' – MethodMan 2014-09-22 16:14:08
在這個'private void produceControls()'中改變你的方法簽名,把一個Control作爲參數。我會在一些我需要解決的東西生產服務器 – MethodMan 2014-09-22 16:32:25