私は、C#でDropDownListまたはAJAX ComboBoxのいずれかを(2つの別個の、ほぼ同一のメソッドを持つ代わりに)設定できる単一のメソッドを作成しようとしています。ドロップダウンオブジェクトとともに、クエリ文字列、テキストフィールドの名前、値フィールドの名前をメソッドに渡します。これが私がこれまでに持っているものです:
public static void BindDropDown(string selectCmd, string textField, string valueField, object ddList)
//Populate dropdown list (DropDownList or ComboBox)
{
// var for dropdown object
object _ddl = null;
// Get type of dropdown
if (ddList.GetType() == typeof(DropDownList))
{
_ddl = (DropDownList)ddList;
}
else if (ddList.GetType() == typeof(ComboBox))
{
_ddl = (ComboBox)ddList;
}
// Setup DB connection
SqlConnection dbConn = new SqlConnection(LTConnStr);
SqlCommand myCmd = new SqlCommand(selectCmd, dbConn);
//Set dropdown list params
_ddl.DataTextField = textField;
_ddl.DataValueField = valueField;
try
{
dbConn.Open();
_ddl.DataSource = myCmd.ExecuteReader();
_ddl.DataBind();
}
finally
{
dbConn.Close();
}
} //end method BindDropDown
しかし、「'object'には'DataTextField'の定義が含まれていません...」というエラーが表示されます。「is」構文も試しました。
// Get type of dropdown
if (ddList is DropDownList)
{
_ddl = (DropDownList)ddList;
}
else if (ddList is ComboBox)
{
_ddl = (ComboBox)ddList;
}
同じ結果になります。私は近くにいることを知っていますが、それを完全に理解することはできません。