Как объединить значения в выпадающем списке в asp.net - PullRequest
3 голосов
/ 12 октября 2011

недавно, работая над выпадающим списком, я столкнулся со странной проблемой: я связываю данные с выпадающим списком, теперь моя таблица данных содержит 3 столбца (Name, Id, Count), в DataTextField я хочу объединить Name и считать как ниже.

DropDownlist.DataTextField = "Name (Count)";

но я не могу сделать вышеупомянутые вещи, есть ли другой способ, которым я могу достичь вышеуказанной цели, я знаю обходной путь, используя цикл и конкатенацию в

DropDownlist.Items.Add();

но я хочу знать, могу ли я использовать DataTextField.

Ответы [ 3 ]

2 голосов
/ 12 октября 2011

Вы можете, если вы можете создать собственное поле данных в вашем источнике данных и выполнить объединение там.Например, что-то вроде этого (вам может потребоваться какое-то приведение или преобразование, но, надеюсь, вы поняли идею):

SELECT
Name,
Count,
Id,
Name + ' (' + Count + ')' AS DataField
FROM
TABLE

Затем установите

DropDownlist.DataTextField = "DataField";
1 голос
/ 12 октября 2011

Вы можете сделать это следующим образом .... я надеюсь, что это поможет вам ..... я добавил пример данных в таблицу данных, вы можете использовать ваши данные,

  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();     
0 голосов
/ 12 октября 2011

Нет способа сделать это так, как вы пытаетесь, потому что для значения поля datatext требуется одно имя столбца. Если вы не хотите делать это с помощью метода .Add (), вы всегда можете воссоздать таблицу данных с другим столбцом и именем столбца, которое содержит объединенные значения Name и счетчика в желаемом формате, но было бы лучше, если заполнив эту таблицу данных из вашей базы данных, чтобы изменить ваш запрос, включив этот четвертый столбец с объединенными значениями. В противном случае методы Add () звучат как ваша лучшая ставка;)

Вот ссылка на некоторую информацию для DataTextField

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

...