正在截断ASP.NET GridView中的文本
本文关键字:GridView 文本 NET ASP | 更新日期: 2023-09-27 18:22:10
以下是GridView,它显示数据库中表中的所有列和记录:
<asp:GridView ID="GridView1" runat="server" AllowPaging="true" BackColor="White"
BorderColor="#CCCCCC" BorderWidth="2px" CellPadding="2" CellSpacing="5"
ForeColor="#000066" GridLines="None">
<RowStyle BackColor="#F7F7F7" />
<AlternatingRowStyle BackColor="#E7E7FF" />
<FooterStyle BackColor="White" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="White" ForeColor="#000066"
HorizontalAlign="Center" />
<SortedAscendingCellStyle BackColor="#F1F1F1" />
<SortedAscendingHeaderStyle BackColor="#007DBB" />
<SortedDescendingCellStyle BackColor="#CAC9C9" />
<SortedDescendingHeaderStyle BackColor="#00547E" />
<Columns>
<asp:CommandField ShowSelectButton="true" HeaderStyle-ForeColor="Yellow"
ControlStyle-ForeColor="Red" SelectText="Select" HeaderText="Select" />
</Columns>
</asp:GridView>
代码背后:
public void ShowBooks()
{
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Book", con);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void Page_Load(object sender, EventArgs e)
{
ShowBooks();
}
在这个表上,一个名为Description
的列有很多文本。在GridView中,我只想显示10或20个第一个字符,后面跟。。。(三个点)。当我将鼠标悬停在文本上时,我希望全文显示为工具提示。
有两种解决方案。解决方案在SQL端和代码端。
第一个:
从数据库获取数据时截断"说明"列的值。
SELECT SUBSTRING(Description, 0, 20) FROM Book
有关T-SQL中SUBSTRING
函数的更多信息,请参阅此处。
第二:
您可以编写一个方法来裁剪字符串值,并在GridView
中使用它。不要忘记;要做到这一点,首先应该将Description
列字段转换为TemplateField
。
助手类中的裁剪方法:
public static class StringHelper
{
public static string Crop(this string text, int maxLength)
{
if (text == null) return string.Empty;
if (text.Length < maxLength) return text;
return text.Substring(0, maxLength);
}
}
Aspx侧:
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# StringHelper.Crop(Eval("Description").ToString(), 20) %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
注意:不要担心空值。当执行ToString()
方法时,将不会得到null reference exception
。我已经测试过了。
奖金:
如果您不想将truncate
与上述选项一起使用,可以使用CSS
word-wrap
属性。
GridView上的描述列:
<asp:BoundField-DataField="Description"HeaderText="Description"ControlStyle CssClass="wrappedText"/>
CSS定义:
.wrappedText { word-wrap: break-word; }
请注意,名为wrappedText的CSS类。
使用如下所示的TemplateField:
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<span title='<%#HttpUtility.HtmlEncode(Eval("Description").ToString)%>'><%#HttpUtility.HtmlEncode(Left(Eval("Description").ToString, 20)) + "..."%></span>
</ItemTemplate>
</asp:TemplateField>
您可能需要检查并允许在Description
字段中使用回车字符或单引号,因为这可能会破坏输出。