为DropDownList提供全局方法

时间:2013-02-21 11:55:30

标签: c# asp.net methods

我从这样的数据库中返回一个列表;

ClsCampus campus = new ClsCampus();
List<ClsCampus> camp = campus.GetCampusAll();
Utility.BindComboBox(ComboBoxCampus, camp, "CampusName", "CampusId");

我有一个类名Utillity,我在其中创建了一个名为BindComboBox的静态方法。

public static void BindComboBox(DropDownList listName, List<Object> list, 
    string textField, string valueField)
{
    listName.DataTextField = textField;
    listName.DataValueField = valueField;
    listName.DataSource = list;
    listName.DataBind();
}

然而,它给了我一个编译错误。 那么,我如何编写一个通用方法,我可以将一般记录列表绑定到组合框

错误1

The best overloaded method match for 'KenMISSchool.Repository.Utility.BindComboBox(System.Web.UI.WebControls.DropDownList, System.Collections.Generic.List<object>, string, string)' has some invalid arguments D:\Projects\KenMISSchool\Web\forms\student\registration.aspx.cs 20  9   Web

2 个答案:

答案 0 :(得分:1)

您正在传递List<ClsCampus>,但方法需要List<Object>,因此我会将其更改为通用方式:

public static void BindComboBox<T>(DropDownList listName, List<T> list, string textField, string valueField)
{
    listName.DataTextField = textField;
    listName.DataValueField = valueField;
    listName.DataSource = list;
    listName.DataBind();
}

并将其称为:

Utility.BindComboBox<ClsCampus>(ComboBoxCampus, camp, "CampusName", "CampusId");

答案 1 :(得分:0)

我们有类似的想法,但以另一种方式解决了它。我不确定它是否适合你,但这是一个建议:

我们实现了一个名为IDropdownable的接口(我不知道最好的名字),它强制使用两个属性:

public string dropdown_value;
public string dropdown_text;

然后我们在所有需要轻松绑定到下拉列表的类上实现了这个接口:

public class Foo : IDropdownable
{
    //Let's say these fields are already in the class:
    private int _id;
    private string _name;
    private DateTime _date;

    //The interface was then implemented:
    public string dropdown_value
    {
        get
        {
            return this._id.ToString();
        }
    }

    public string dropdown_text
    {
        get
        {
            return String.Format("{0} ({1})", this._name, this._date.Year);
            //Or simpler: return this._name;
        }
    }

}

唯一剩下的就是创建一个通用函数,该函数接收IDropdownable参数并按照您喜欢的方式输出下拉列表(HTML stringSelectList,{{1} },...那里有很多选项。)

List<SelectListItem>

如果你愿意,我可以给你一个函数的近似值。

<强>注释

我们在MVC2 ASP.Net 4中做到了这一点。老实说,我不确定在经典ASP.NET中应该返回什么类型,但我假设某种类型的List / Array可以工作。