如何为ASP.NET经典版Telerik RadGrid的Observation列添加省略号功能
解决ASP.NET经典版Telerik RadGrid GridBoundColumn省略号显示问题
方案一:CSS + 客户端列调整事件(推荐)
该方案既能实现固定宽度下的文本省略,又支持列宽调整后自动适配显示。
1. 添加自定义CSS类
在页面<style>标签或外部样式表中定义:
.ellipsis-column { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
2. 为Observation列应用CSS类
修改GridBoundColumn的ItemStyle,添加CssClass属性:
<telerik:GridBoundColumn DataField="Observation" FilterControlAltText="Filter Observation column" HeaderText="Observation" UniqueName="Observation"> <HeaderStyle HorizontalAlign="Left" Wrap="false" Width="350px" /> <ItemStyle HorizontalAlign="Left" Wrap="false" Width="350px" CssClass="ellipsis-column" /> </telerik:GridBoundColumn>
3. 处理列宽调整事件
在RadGrid的ClientSettings中绑定列调整事件,并编写JS函数同步更新单元格宽度:
<ClientSettings> <Selecting AllowRowSelect="false" /> <Scrolling AllowScroll="True" UseStaticHeaders="True" EnableVirtualScrollPaging="true" /> <Resizing AllowColumnResize="true" AllowResizeToFit="true" /> <ClientEvents OnColumnResized="onObservationColumnResized" /> </ClientSettings>
对应的JavaScript代码:
function onObservationColumnResized(sender, args) { if (args.get_resizedColumn().get_uniqueName() === "Observation") { var newWidth = args.get_resizedColumnWidth(); var tableView = args.get_tableView(); tableView.getItems().forEach(function(rowItem) { var cell = rowItem.get_cell("Observation"); if (cell) { cell.style.maxWidth = newWidth + "px"; } }); } }
方案二:服务器端文本截断(简单但无自适应)
若无需支持列宽调整后自动展开,可直接在服务器端截断文本并添加省略号:
1. 替换为GridTemplateColumn
将原GridBoundColumn替换为模板列,在ItemTemplate中处理文本:
<telerik:GridTemplateColumn FilterControlAltText="Filter Observation column" HeaderText="Observation" UniqueName="Observation"> <HeaderStyle HorizontalAlign="Left" Wrap="false" Width="350px" /> <ItemStyle HorizontalAlign="Left" Wrap="false" Width="350px" /> <ItemTemplate> <%# TruncateText(Eval("Observation").ToString(), 250) %> </ItemTemplate> </telerik:GridTemplateColumn>
2. 编写服务器端截断函数
在后台代码文件(.aspx.cs/.aspx.vb)中添加:
protected string TruncateText(string text, int maxLength) { if (string.IsNullOrEmpty(text) || text.Length <= maxLength) return text; return text.Substring(0, maxLength) + "..."; }
注意:方案一中需确保MasterTableView的
TableLayout="Fixed"属性已配置(你的代码中已设置),这是文本溢出省略号生效的必要条件。
内容的提问来源于stack exchange,提问作者FOREG
相关产品推荐
相关产品推荐

