Как объединить значения в выпадающем списке в asp.net

#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

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.datatextfield(VS.85).aspx