#asp.net #drop-down-menu #datatextfield
#asp.net #выпадающее меню #datatextfield
Вопрос:
недавно, работая над выпадающим списком, я столкнулся со странной проблемой: я привязываю таблицу данных к выпадающему списку, теперь моя таблица данных содержит 3 столбца (имя, идентификатор, количество), в DataTextField я хочу объединить имя и количество, как показано ниже.
DropDownlist.DataTextField = "Name (Count)";
но я не могу сделать вышеуказанную вещь, есть ли какой-либо другой способ, которым я могу достичь вышеуказанной цели, я знаю, как обойти, используя цикл и объединение в
DropDownlist.Items.Add();
но я хочу знать, могу ли я использовать DataTextField.
Ответ №1:
Вы можете, если сможете создать пользовательское поле данных в своем источнике данных и выполнить конкатенацию там. Например, что-то вроде этого (возможно, вам придется выполнить какое-то приведение или преобразование, но, надеюсь, вы поняли идею):
SELECT
Name,
Count,
Id,
Name ' (' Count ')' AS DataField
FROM
TABLE
Затем установите
DropDownlist.DataTextField = "DataField";
Ответ №2:
Вы можете сделать так …. я надеюсь, что это поможет вам ….. я добавил образцы данных в таблицу данных, вы можете использовать свои данные,
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();
Ответ №3:
Невозможно сделать это так, как вы пытаетесь, потому что для значения datatextfield требуется единственное имя столбца. Если вы не хотите делать это с помощью метода .Add(), вы всегда можете воссоздать таблицу данных с другим столбцом и именем столбца, который содержит объединенные значения Name и count в желаемом форматировании, но было бы лучше, если бы вы заполнили эту таблицу данных из своей базы данных, чтобы изменить свой запросчтобы включить этот четвертый столбец с объединенными значениями. В противном случае методы Add() звучат как ваш лучший выбор 😉
Вот ссылка на некоторую информацию для DataTextField