ASP中如何将Telerik Grid布尔列的True/False替换为Open/Close
解决方案
你可以通过以下两种常用方案实现布尔值的显示文本转换:
方案1:修改前端列为模板列(推荐,无需额外编写后端逻辑)
把原来的GridBoundColumn替换为GridTemplateColumn,直接在前端绑定时做判断转换,修改后的前端代码如下:
<telerik:GridTemplateColumn HeaderText="Is the product Web On/Off?" FilterControlWidth="100px" AutoPostBackOnFilter="true" CurrentFilterFunction="Contains" AllowFiltering="false" FilterDelay="1500" ShowFilterIcon="false"> <ItemTemplate> <%# (bool)Eval("PublishOnB2B") ? "Open" : "Close" %> </ItemTemplate> </telerik:GridTemplateColumn>
该方案无需修改原有后端绑定逻辑,实现简单,加载效率更高。
注意:如果
PublishOnB2B字段允许为空,需要先做空值判断再转换,避免运行时报错。
方案2:保留原有BoundColumn,通过后端ItemDataBound事件处理
如果不想改动前端列类型,可以通过RadGrid的行绑定事件逐行处理:
- 给RadGrid控件添加
OnItemDataBound事件属性:
<telerik:RadGrid ID="RadGrid1" runat="server" OnItemDataBound="RadGrid1_ItemDataBound" (保留你原有其他属性)>
- 在.aspx.cs后台添加对应的事件处理方法:
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { // 仅处理数据行,跳过表头、分页栏等非数据行 if (e.Item is GridDataItem dataItem) { bool publishStatus = (bool)DataBinder.Eval(dataItem.DataItem, "PublishOnB2B"); dataItem["PublishOnB2B"].Text = publishStatus ? "Open" : "Close"; } }
该方案适合需要同步做其他行逻辑处理的场景。
内容的提问来源于stack exchange,提问作者burak
相关产品推荐
相关产品推荐

