如何对已从数据库中eval的文本进行限制

本文关键字:文本 eval 数据库 | 更新日期: 2023-09-27 18:10:05

我的问题是我不知道如何使"tekst"只有180个字符。有人能帮帮我吗?当它是eval且值大于180时,我必须将其缩减为180,并做一个read more链接

<asp:Panel ID="biler_panel" runat="server" Visible="False">
                <asp:SqlDataSource ID="SqlDataSource5" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString1 %>" DeleteCommand="DELETE FROM [Artikler] WHERE [Id] = @Id" InsertCommand="INSERT INTO [Artikler] ([Navn], [Tekst], [Dato], [Vist], [Fk_kat]) VALUES (@Navn, @Tekst, @Dato, @Vist, @Fk_kat)" ProviderName="<%$ ConnectionStrings:DatabaseConnectionString1.ProviderName %>" SelectCommand="SELECT [Id], [Navn], [Tekst], [Dato], [Vist], [Fk_kat] FROM [Artikler]" UpdateCommand="UPDATE [Artikler] SET [Navn] = @Navn, [Tekst] = @Tekst, [Dato] = @Dato, [Vist] = @Vist, [Fk_kat] = @Fk_kat WHERE [Id] = @Id">
                    <DeleteParameters>
                        <asp:Parameter Name="Id" Type="Int32" />
                    </DeleteParameters>
                    <InsertParameters>
                        <asp:Parameter Name="Navn" Type="String" />
                        <asp:Parameter Name="Tekst" Type="String" />
                        <asp:Parameter Name="Dato" Type="DateTime" />
                        <asp:Parameter Name="Vist" Type="Int32" />
                        <asp:Parameter Name="Fk_kat" Type="String" />
                    </InsertParameters>
                    <UpdateParameters>
                        <asp:Parameter Name="Navn" Type="String" />
                        <asp:Parameter Name="Tekst" Type="String" />
                        <asp:Parameter Name="Dato" Type="DateTime" />
                        <asp:Parameter Name="Vist" Type="Int32" />
                        <asp:Parameter Name="Fk_kat" Type="String" />
                        <asp:Parameter Name="Id" Type="Int32" />
                    </UpdateParameters>
                </asp:SqlDataSource>
            <asp:Repeater ID="Repeater5" runat="server" DataSourceID="SqlDataSource5">

                <ItemTemplate>
                    <div id="bilerdiv"><p class="overskrift"><%# Eval("Navn") %></p>
                        <p class="tid"><%# Eval("Dato") %></p>
                        <p class="tekst"><%#Eval ("Tekst") %></p>
                    </div>
                </ItemTemplate>
            </asp:Repeater>

如何对已从数据库中eval的文本进行限制

你可以试试:

<%# Eval("Tekst").ToString().PadRight(180).Substring(0, 180).TrimEnd() %>

或者使用LINQ:

<%# Eval("Tekst").ToString().Take(180).Aggregate("", (x,y) => x + y) %>

编辑:对于阅读更多链接实现,您可以使用jQuery,假设您的标记如下:

:

<p class="tekst-limited"><%# Eval("Tekst").ToString().PadRight(180).Substring(0, 180).TrimEnd() %></p>
<p class="tekst-full"><%#Eval ("Tekst") %></p>
<a href="#" class="button"></a>
jQuery

:

$(".button").click(function(){
  var moreAndLess = $("p").is(':visible') ? 'Read More' : 'Less';
  $(this).text(moreAndLess);
  $(".tekst-full").slideToggle();
});

你可以把它作为标题显示在鼠标上

<div id="bilerdiv">
     <p class="overskrift" title='<%# Eval("Tekst").ToString()%>'>
         <%# Eval("Tekst").ToString().PadRight(180).Substring(0, 180).TrimEnd() %>
     </p>
     ......
 </div>

如果大于180个字符,则显示180个字符,并在鼠标上全部显示<p>

有许多jquery的工具提示可以使用。

  1. http://jqueryui.com/tooltip/默认
  2. http://jquerytools.org/documentation/tooltip/

CSS text-overflow属性在这里可能会有所帮助。这样你就不需要做任何事情,让浏览器为你完成工作。