Member 13019612 Ответов: 1

Отображение двух столбцов в выпадающем списке


всем привет
у меня есть выпадающий список, который дает 2 столбца таблицы с источником данных
стол: комната
столбцы : Room_Code,Room_Capacity
мне нужно показать что-то вроде этого
Номер : 20 Вместимость : 4
Номер : 21 Вместимость : 2
.
.
.
в выпадающем списке
что я могу сделать?

Что я уже пробовал:

я ищу на этом сайте и нахожу что-то, но не работаю вообще
я читал это Выпадающий список нескольких столбцов для ASP.NET[^]
но его vb.net мне нужен код C#

F-ES Sitecore

Это очень распространенное требование, если вы продолжите гуглить, я уверен, что вы найдете что-то, что вы можете использовать.

Member 13019612

я не знаю братан попробует

1 Ответов

Рейтинг:
11

Sheila Pontes

Привет,


Чтобы отобразить два данных из столбцов datatable в вашем выпадающем списке, я предлагаю вам отформатировать данные перед их привязкой. Для этого используйте linq.
Это самый простой способ.

Вот пример такого предположения.

HTML

<form id="form1" runat="server">
<div>
     <asp:DropDownList ID="ddl_room" runat="server">
    </asp:DropDownList>
</div>
</form>


С ФОНОВЫМ КОДОМ
private DataTable SelectData()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("Room_Code", typeof(string));
    dt.Columns.Add("Room_Capacity", typeof(string));

    DataRow dr = dt.NewRow();
    dr["Room_Code"] = "20";
    dr["Room_Capacity"] = "4";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr["Room_Code"] = "21";
    dr["Room_Capacity"] = "2";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr["Room_Code"] = "22";
    dr["Room_Capacity"] = "1";
    dt.Rows.Add(dr);

    dr = dt.NewRow();
    dr["Room_Code"] = "1";
    dr["Room_Capacity"] = "10";
    dt.Rows.Add(dr);
 
    return dt;

}

private void CreateDataSourceFillDropList(DataTable dt)
{
    var datasource = from x in dt.AsEnumerable()
            select new {
                Code = x.Field<string>("Room_Code")
                ,DisplayField = String.Format("Room: {0} Capacity: {1}", x.Field<string>("Room_Code").PadLeft(2, '0'), x.Field<string>("Room_Capacity").PadLeft(2, '0'))
            };

    this.ddl_room.DataTextField = "DisplayField";
    this.ddl_room.DataValueField = "Code";
    this.ddl_room.DataSource = datasource;
    this.ddl_room.DataBind();   
}
        
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        this.CreateDataSourceFillDropList(this.SelectData());
                
    }
}


Karthik_Mahalingam

5