[英]Need generic utility C# method for populating ASP.NET DropDownList
我在实用程序类中有类似下面的方法。 我想更改参数dataSource以接受任何类型的数据源,即DataSet,DataView,List <T>,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);
}
好吧,因为DropDownList
上的DataSource
属性具有类型object
您可以更改方法签名以接受object
。 这不会使你的方法通用(在.NET意义上),但也许它就足够了。
我相信以下是您正在寻找的。
public void FillCombo<TSource>(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类上创建它作为Extension方法(.NET 3.5+)...
Imports WC = System.Web.Controls
...
<Extension()> 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#。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.