DropDownList需要2个DataTextFields DataTable作为DataSource

时间:2017-05-04 13:43:45

标签: c# asp.net

我在尝试提供DDL 2 DataTextFields时遇到了问题。

        DataTable ServiceClonRegister = doc.getAllDataRegs(1, 999999999, "b.RegisterId=8 AND b.ACTIVE=1");
        iServiceClon.DataSource = ServiceClonRegister;
        iServiceClon.DataTextField = "Name" + "CODE";
        iServiceClon.DataValueField = "ROWID";
        iServiceClon.DataBind();
        iServiceClon.Items.Insert(0, new ListItem("Please, pick!", "0", true));
        iServiceClon.SelectedIndex = 0;

关于如何实现它的任何建议? 这是元素的html:

    <select class="DropDownListHint mandatory" id="iServiceClon" runat="server" aria-describedby="lbiOffice"
                                data-live-search="true" data-placement="top" data-toggle="dropdown" data-style="DropDownListHint-datastyle">
                            </select>

2 个答案:

答案 0 :(得分:2)

解决方案1: 您可以创建表达式列&amp;将其添加到您的DataTable。

 DataColumn dc = new DataColumn("NEwColumnName");
            dc.Expression = "Isnull(Name,'') +Isnull(Code,'')";
iServiceClon.Columns.Add(dc);

&安培;使用dataTextfield中的新列。这样可以节省很多循环。

解决方案2: 如果数据表来自SQL查询,请在选择时在其中创建虚拟计算列。

答案 1 :(得分:1)

您可以通过查询以两个值返回第三列的方式更改填充DataTable的代码。或者,您可以自己添加列并将连接值放入其中。如下所示:

DataTable ServiceClonRegister = doc.getAllDataRegs(1, 999999999, "b.RegisterId=8 AND b.ACTIVE=1");
ServiceClonRegister.Columns.Add("NameAndCode");
foreach (DataRow row in ServiceClonRegister.Rows)
{
    row["NameAndCode"] = row["Name"].ToString() + row["CODE"].ToString();
}
iServiceClon.DataSource = ServiceClonRegister;
iServiceClon.DataTextField = "NameAndCode";
iServiceClon.DataValueField = "ROWID";
//rest of your code