You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:35:36