在我们上一篇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
,但还没有想出一个有效的组合。
List<T>
中提取特定属性以将这些值用作DropDownList
的显示值,如果是,那么该主题是否有一个很好的资源?答案 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() %>'