Объединение двух свойств для отображения в DropDownList - PullRequest
3 голосов
/ 27 февраля 2009

Фон

В нашем последнем приключении я пытался правильно показать Dictionary<Foo, Bar<T>>. Благодаря полезным ответам в этом посте, я понимаю, что поступил неправильно.

Проблема

В сегодняшнем приключении я пытался получить два конкретных свойства из List<T> в последнем вопросе для отображения. Каждый список имеет определенные свойства, показанные ниже:

---------------------
|     Bar Class     |
---------------------
| Id        int     |
| Foo.Id    int     |
| Name      string  |
| Type      string  |
---------------------

Для отображения я хотел бы отобразить Bar.Name + Bar.Type, объединенный вместе. Очевидно, мне нужно сохранить весь объект, так как идентификатор будет передан обратно для отправки в базу данных.

Сначала я попробовал <%#Eval("Value.Type" + "Value.Name")%>, ясно, что не сработало. Теперь я предполагаю, что мне нужно написать цикл foreach для итерации по объекту словаря, извлечь целые объекты Dictionary.Value и создать из этого выпадающий список. Но затем возникает проблема привязки этого к связанному профилю и отправки его обратно в базу данных оптом.

Вот как выглядит страница:

<tr><td align="center"> <%#Eval("Key.Name") %></td>
    <td align="center"><asp:DropDownList ID="ddlListOfBars" runat="server" 
DataSource='<%#Eval("Value")%>' DataValueField="Id" DataTextField="Type" />
</td>

Я искал разные способы изменения DataTextField, но еще не нашел комбинации, которая работает.

Вопросы

  1. Я обдумываю это?
  2. Что мне не хватает?
  3. Есть ли ресурс для того, чтобы вы могли извлечь определенные свойства из List<T>, чтобы использовать эти значения в качестве отображаемых значений для DropDownList, и если да, есть ли хороший ресурс по этой теме?
  4. Этот пост ясен как грязь?

Ответы [ 3 ]

2 голосов
/ 27 февраля 2009

Как выясняется, проблему легко решить, если два столбца таблицы объединяются в один столбец, например:

SELECT Column1Name + ' - ' + Column2Name AS Column3Name FROM Table1 WHERE ...

Это превращает это:

Column1Name          Column2Name
-----------          ----------- 
Stuff1               Stuff5
Stuff2               Stuff6
Stuff3               Stuff7
Stuff4               Stuff8

В это:

Column3Name
---------------
Stuff1 - Stuff5
Stuff2 - Stuff6
Stuff3 - Stuff7
Stuff4 - Stuff8

Когда ничего не помогает, подумайте немного о более низком уровне.

0 голосов
/ 12 марта 2010

Мне пришлось преобразовать объект в строку перед конкатенацией строки. Это сработало для меня.

Text='<%# Eval("LastName").ToString() + ', ' + Eval("FirstName").ToString() %>'

0 голосов
/ 27 февраля 2009

Может быть, я что-то упускаю (не смотрел на предыдущий вопрос), но почему бы тебе просто не сделать это?

<%# Eval("Name") + Eval("Type") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...