繁体   English   中英

需要通用实用程序C#方法来填充ASP.NET DropDownList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM