最近在处理下拉列表时,我遇到了一个奇怪的问题,我正在将数据表绑定到下拉列表,现在我的数据表包含 3 列,(名称,Id,Count),在 DataTextField 中我想连接名称和计数,如下所示。
DropDownlist.DataTextField = "Name (Count)";
但我无法做上述事情,有没有其他方法可以实现上述目标,我知道解决方法,使用循环和连接
DropDownlist.Items.Add();
但我想知道我是否可以使用 DataTextField。
最近在处理下拉列表时,我遇到了一个奇怪的问题,我正在将数据表绑定到下拉列表,现在我的数据表包含 3 列,(名称,Id,Count),在 DataTextField 中我想连接名称和计数,如下所示。
DropDownlist.DataTextField = "Name (Count)";
但我无法做上述事情,有没有其他方法可以实现上述目标,我知道解决方法,使用循环和连接
DropDownlist.Items.Add();
但我想知道我是否可以使用 DataTextField。
如果您可以在数据源中创建自定义数据字段并在其中进行连接,则可以。例如,类似这样的事情(您可能需要进行一些转换或转换,但希望您能理解):
SELECT
Name,
Count,
Id,
Name + ' (' + Count + ')' AS DataField
FROM
TABLE
然后设置
DropDownlist.DataTextField = "DataField";
你可以这样做......我希望它会帮助你......我已经将示例数据添加到数据表中,你可以使用你的数据,
DataTable table = new DataTable();
table.Columns.Add("id");
table.Columns.Add("name");
table.Columns.Add("count");
DataRow dr = table.NewRow();
dr["id"] = "1";
dr["name"] = "zhang";
dr["count"] = "6";
table.Rows.Add(dr);
DataRow[] rows = new DataRow[table.Rows.Count];
table.Rows.CopyTo(rows, 0);
var res = from row in rows
select new
{
id=row["id"].ToString (),
namewithcount = row["name"].ToString () +"(" row["count"].ToString ()+")";
};
DropDownList1.DataSource = res;
DropDownList1.DataTextField = "namewithcount";
DropDownList1.DataValueField = "id";
DropDownList1.DataBind();
由于 datatextfield 值需要列的单个名称,因此无法以您尝试的方式执行此操作。如果您不想使用 .Add() 方法进行此操作,您始终可以使用另一个列和列名称重新创建数据表,其中包含 Name 的连接值并以您想要的格式计数,但如果您的格式会更好从您的数据库中填充此数据表以更改您的查询以将第四列包含连接值。否则 Add() 方法听起来像是你最好的选择;)
这是 DataTextField 的一些信息的链接