<style>
.ellipsis-150 {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block; /* 或 block */
vertical-align: middle;
}
</style>
protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType != DataControlRowType.DataRow) return;
// 第 5 列 (索引 4) 申請原因
string reason = e.Row.Cells[4].Text;
e.Row.Cells[4].Text = $"<div class='ellipsis-150' title='{HttpUtility.HtmlEncode(reason)}'>{HttpUtility.HtmlEncode(reason)}</div>";
// 第 8 列 (索引 7) 審批備註
string remark = e.Row.Cells[7].Text;
e.Row.Cells[7].Text = $"<div class='ellipsis-150' title='{HttpUtility.HtmlEncode(remark)}'>{HttpUtility.HtmlEncode(remark)}</div>";
// 行懸停/點擊樣式增強
e.Row.Attributes["onmouseover"] = "this.style.backgroundColor='#F4FBFF';";
e.Row.Attributes["onmouseout"] = "this.style.backgroundColor='';";
e.Row.Attributes["onclick"] = "this.style.backgroundColor='#e2eaf1';";
}
width 生效於行內元素。if (e.Row.RowType == DataControlRowType.Header) e.Row.Cells[4].CssClass = "ellipsis-150";.ellipsis-3lines {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
width: 300px;
}
<asp:TemplateField HeaderText="原因">
<ItemTemplate>
<div class="ellipsis-150" title='<%# HttpUtility.HtmlEncode(Eval("Reason")) %>'>
<%# HttpUtility.HtmlEncode(Eval("Reason")) %>
</div>
</ItemTemplate>
</asp:TemplateField>
優勢:聲明式、無後台代碼、設計時可見、配合 EnableViewState="false" 性能更好。