需要通用实用程序C#方法来填充ASP.NET DropDownList
我在实用程序类中有类似以下的方法。 我想更改参数dataSource以接受任何类型的数据源,即DataSet,DataView,List ,DataTable和ArrayList。
这可能吗? 我如何更改方法签名(以及参数和类型)以允许我灵活地传入任何可接受的数据源进行绑定?
public void FillCombo(DropDownList ddl, DataTable dataSource, string textField, string valueField, bool addSelect) { ddl.DataValueField = valueField; ddl.DataTextField = textField; ddl.DataSource = dataSource; ddl.DataBind(); if (addSelect) AddSelectCombo(ddl, "Select", -1); }
我相信以下是您正在寻找的。
public void FillCombo(DropDownList ddl, TSource dataSource, string textField, string valueField, bool addSelect) { ddl.DataValueField = valueField; ddl.DataTextField = textField; ddl.DataSource = dataSource; ddl.DataBind(); if (addSelect) AddSelectCombo(ddl, "Select", -1); }
好吧,因为DropDownList
上的DataSource
属性具有类型object
您可以更改方法签名以接受object
。 这不会使你的方法通用(在.NET意义上),但也许它就足够了。
我在我的库中有类似的东西,我所做的是在DropDownList类上创建它作为扩展方法(.NET 3.5+)…
Imports WC = System.Web.Controls
…
Public Sub DataBindEx( ByVal target As WC.DropDownList, ByVal DataSource As Object, ByVal DataTextField As String, ByVal DataValueField As String, Optional ByVal SetTooltips As Boolean = True ) With target .DataSource = DataSource .DataTextField = DataTextField .DataValueField = DataValueField .DataBind() End With If SetTooltips Then For Each li As ListItem In target.Items li.Attributes("title") = li.Text Next End If End Sub
我会留给你翻译成C#。