【问题标题】:How do i get my repeater results to appear line by line如何让我的转发器结果逐行显示
【发布时间】:2014-07-24 23:41:59
【问题描述】:
<p runat="server" id="pServices">
    <asp:Repeater runat="server" ID="rptServices" OnItemDataBound="rptServices_OnItemDataBound">
        <HeaderTemplate></HeaderTemplate>
        <ItemTemplate>
            <asp:Label runat="server" ID="lblService"></asp:Label>
        </ItemTemplate>
        <AlternatingItemTemplate>
            <asp:Label runat="server" ID="lblService"></asp:Label>
        </AlternatingItemTemplate>
    </asp:Repeater>
</p>

而在我背后的代码中

private void updatePageWithUserData(User UserProfile)
{
    this.pProfile.InnerText = UserProfile.About;
    rptServices.DataSource = UserProfile.Services;
    rptServices.DataBind();
}

protected void rptServices_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Service serviceItem = (Service)e.Item.DataItem;
        ((Label)e.Item.FindControl("lblService")).Text = (serviceItem.ServiceName);

    }
}

但是我得到的结果是这样的:

Software Development Web Development

我希望它显示为:

Software Development Web Development

【问题讨论】:

    标签: asp.net webforms repeater code-behind


    【解决方案1】:

    请记住,在 WebForms 中,您的所有输出都是 HTML,而 HTML 作为一种语言不关心空格或换行符。

    因此,如果您查看该 HTML 上的源代码,您将看到如下内容:

       <span>Software Development</span>
       <span>Web Development</span>
    

    现在,由于 HTML 不关心文件中有换行符这一事实,它们一起运行,你会看到:

    软件开发网页开发

    因此,为了获得空格,您需要以 HTML 可以理解的方式指示该空格。有几种方法可以做到这一点,但我会在这里为您推荐三种:

    1. 您可以使用
      标签,它表示应该直观地显示换行符。如果您要走这条路,您的中继器的项目模板将如下所示:

      <ItemTemplate>
          <asp:Label runat="server" ID="lblService"></asp:Label><br/>
      </ItemTemplate>
      
    2. SPAN 标记是一种称为内联元素的 HTML 标记,因为它不关心行距。如果您使用 DIV 标签或 P 标签来包装标签,则这些标签是块元素并且尊重间距,因此您的项目模板将如下所示:

      <ItemTemplate>
          <div><asp:Label runat="server" ID="lblService"></asp:Label></div>
      </ItemTemplate>
      
    3. 您还可以使用 CSS 使内联元素表现得像块元素一样。通过将类名应用于标签,然后使用 CSS 对其进行样式设置,您可以获得相同的结果。看起来像这样:

      <ItemTemplate>
          <asp:Label runat="server" ID="lblService" CssClass="myStyle"></asp:Label>
      </ItemTemplate>
      

    然后是css:

       .mystyle { display: block; }
    

    这为您提供了几种不同的方法来解决问题,并有助于解释为什么您的代码无法正常工作。

    【讨论】:

    • 嘿亚伦,谢谢你,你把它分解得尽可能好
    【解决方案2】:

    尝试将输出包装在 div 元素中。

      <ItemTemplate>
            <div>    
                 <asp:Label runat="server" ID="lblService"></asp:Label>
            </div>
      </ItemTemplate>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 2015-01-13
      • 2019-01-13
      相关资源
      最近更新 更多