在DropDownList中连接显示的两个属性

时间:2009-02-27 17:31:24

标签: c# asp.net dictionary

背景

在我们上一篇adventure中,我试图正确展示Dictionary<Foo, Bar<T>>。感谢帖子中的有用答案,我意识到我一直在以错误的方式解决这个问题。

问题

在今天的冒险中,我一直试图从最后一个问题的List<T>中获取两个特定属性来显示。每个List都有特定的属性,如下所示:

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

为了显示,我想显示连接在一起的Bar.Name + Bar.Type。显然我必须保留完整的对象,因为Id将被传回以发送到数据库。

起初,我尝试<%#Eval("Value.Type" + "Value.Name")%>,显然没有用。我现在的猜测是我需要编写一个foreach循环来遍历Dictionary对象,并检查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 个答案:

答案 0 :(得分:2)

事实证明,如果表中的两列连接成一列,问题很容易解决,如下所示:

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

当所有其他方法都失败时,请考虑更低一级。

答案 1 :(得分:0)

也许我错过了一些东西(没看过前面的问题),但你为什么不这样做呢?

<%# Eval("Name") + Eval("Type") %>

答案 2 :(得分:0)

在连接字符串之前,我必须将对象转换为字符串。 这对我有用。

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