【问题标题】:Concatenating Two Properties for Display in a DropDownList连接两个属性以在 DropDownList 中显示
【发布时间】:2010-10-10 09:26:29
【问题描述】:

背景

在我们上一个adventure 中,我试图正确显示Dictionary<Foo, Bar<T>>。感谢那篇文章中的有用答案,我意识到我一直在以错误的方式处理它。

问题

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

--------------------- |酒吧类 | --------------------- |整数 | | Foo.Id 整数 | |名称字符串 | |输入字符串 | ---------------------

为了显示,我想显示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&lt;T&gt; 中提取特定属性以将这些值用作DropDownList 的显示值,如果有,是否有关于该主题的好资源?
  4. 这个帖子是不是一清二楚?

【问题讨论】:

    标签: c# asp.net dictionary


    【解决方案1】:

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

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

    这会变成这样:

    列 1 名称 列 2 名称 ------------ ------------ 东西 1 东西 5 东西2 东西6 东西 3 东西 7 东西4 东西8

    进入这个:

    列 3 名称 --------------- 东西 1 - 东西 5 东西 2 - 东西 6 东西 3 - 东西 7 东西 4 - 东西 8

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

    【讨论】:

    • 这是一个非常合理的解决方案。在这种情况下,我将创建一个视图,以便从应用程序的角度来看,串联或多或少是无缝的。
    【解决方案2】:

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

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

    【讨论】:

    • @Gortok - 我感觉到你的痛苦,来自 WinForms 的 Web 表单很难!
    • 感谢您的回答。它没有帮助(请参阅我对我的问题的编辑以及我在下面的帖子),但感谢您的尝试。具体来说,有问题的是“DataTextField”。如果你有办法在那里连接它,请告诉我,否则我将在下面使用我的解决方案。
    • 这给出了错误:数据绑定方法,如 Eval()、XPath() 和 Bind() 只能在数据绑定控件的上下文中使用。
    【解决方案3】:

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

    Text='&lt;%# Eval("LastName").ToString() + ', ' + Eval("FirstName").ToString() %&gt;'

    【讨论】:

    • 我得到“Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。”错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多