【问题标题】:nest repeater with list of string带有字符串列表的嵌套中继器
【发布时间】:2018-08-23 14:27:47
【问题描述】:

我有以下类型的对象:

public class TriggerMessage
{
    public List<string> Triggers_EN { get; set; }
    public List<string> Triggers_FR { get; set; }
    public string Message_EN { get; set; }
    public string Message_FR { get; set; }
    public int UID { get; set; }
}

现在,我在 List 中也有一堆这样的对象...

List<TriggerMessage> dataset = new List<TriggerMessage>(){.......};

现在我也将此列表绑定到转发器:

<table style="width:100%;">
    <asp:Repeater ID="lstTriggers" runat="server">
        <HeaderTemplate>
            <tr style="border-bottom:1px solid black;">
                <th>English Triggers</th>
                <th>French Triggers</th>
                <th>English Message</th>
                <th>French Message</th>
                <th>Actions</th>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td><div style="overflow-x:scroll; width:100%"><%#Eval("Triggers_EN").ToString() %></div></td>
                <td><div style="overflow-x:scroll; width:100%"><%#Eval("Triggers_FR").ToString() %></div></td>
                <td><div style="overflow-x:scroll; width:100%"><%#Eval("Message_EN") %></div></td>
                <td><div style="overflow-x:scroll; width:100%"><%#Eval("Message_FR") %></div></td>
                <td><a href="Modify.aspx?ID=<%#Eval("UID") %>">Modify</a> | <a href="Delete.aspx?ID=<%#Eval("UID") %>">Delete</a></td>
            </tr>
        </ItemTemplate>   
    </asp:Repeater>
</table>

那么问题是什么?好吧,在我的中继器中,对于英语和法语触发器,我得到 System.Collections.Generic.List`1[System.String] 而不是实际的字符串列表...我心想:构建一个只有字符串而不是字符串的对象的“简单”版本列表...但那是用于显示列表的 HTML 版本的大量代码。

有没有办法使用嵌套中继器将字符串列表显示为单独的字符串,而不必构建不同的对象或使用OnItemDataBound 事件?

【问题讨论】:

  • 在您的场景中使用嵌套中继器可能会过大。无法使用string.Join(", ", items)?如果不是,预期的输出是什么?
  • 确实有效。我将连接与
    一起使用,它就像一个魅力!谢谢!请张贴作为答案。

标签: c# asp.net .net nested-repeater


【解决方案1】:

嵌套中继器可以工作,但它可能有点过分。如果您不想使用OnItemDataBound 事件,最简单的方法是使用string.Join("&lt;br/&gt; ", items)

提示:如果您使用 .NET Framework 4.5 或更高版本,则可以使用 ItemType 进行强类型数据绑定,这样您就不必将对象转换为实际类型。 p>

例如,

<asp:Repeater ID="lstTriggers" runat="server" ItemType="AspNetWebForm.TriggerMessage">
    <HeaderTemplate>
        <tr style="border-bottom: 1px solid black;">
            <th>English Triggers</th>
            <th>French Triggers</th>
            <th>English Message</th>
            <th>French Message</th>
            <th>Actions</th>
        </tr>
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td>
                <div style="overflow-x: scroll; width: 100%">
                    <%# string.Join("<br/>", (List<string>)Eval("Triggers_EN")) %>
                </div>
            </td>
            <td>
                <div style="overflow-x: scroll; width: 100%">
                    <%# string.Join("<br/>", Item.Triggers_FR) %>
                </div>
            </td>
            <td>
                <div style="overflow-x: scroll; width: 100%"><%#Eval("Message_EN") %></div>
            </td>
            <td>
                <div style="overflow-x: scroll; width: 100%"><%#Eval("Message_FR") %></div>
            </td>
            <td><a href="Modify.aspx?ID=<%#Eval("UID") %>">Modify</a> | <a href="Delete.aspx?ID=<%#Eval("UID") %>">Delete</a></td>
        </tr>
    </ItemTemplate>
</asp:Repeater>

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 2014-06-04
    • 2019-08-21
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多