我可以在ASP.NET GridView中将布尔值转换为是/否
我有一个ASP.NET的GridView
的列映射到布尔值。 我想要显示“是”/“否”而不是“真”/“假”。 其实我想要“Ja”/“Nej”(用丹麦语)。
这可能吗?
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false"> <columns> ... <asp:boundfield headertext="Active" datafield="Active" dataformatstring="{0:Yes/No}" /> ... </columns> </asp:gridview>
我使用VB代码:
<asp:TemplateField HeaderText="Active" SortExpression="Active"> <ItemTemplate><%#IIf(Boolean.Parse(Eval("Active").ToString()), "Yes", "No")%></ItemTemplate> </asp:TemplateField>
这应该适用于C#(未经testing):
<asp:TemplateField HeaderText="Active" SortExpression="Active"> <ItemTemplate><%# (Boolean.Parse(Eval("Active").ToString())) ? "Yes" : "No" %></ItemTemplate> </asp:TemplateField>
添加一个方法到你的页面类,像这样:
public string YesNo(bool active) { return active ? "Yes" : "No"; }
然后在你的TemplateField
Bind
使用这个方法:
<%# YesNo(Active) %>
不 – 但你可以使用模板列:
<script runat="server"> TResult Eval<T, TResult>(string field, Func<T, TResult> converter) { object o = DataBinder.Eval(Container.DataItem, field); if (converter == null) { return (TResult)o; } return converter((T)o); } </script> <asp:TemplateField> <ItemTemplate> <%# Eval<bool, string>("Active", b => b ? "Yes" : "No") %> </ItemTemplate> </asp:TemplateField>
你可以使用Mixin。
/// <summary> /// Adds "mixins" to the Boolean class. /// </summary> public static class BooleanMixins { /// <summary> /// Converts the value of this instance to its equivalent string representation (either "Yes" or "No"). /// </summary> /// <param name="boolean"></param> /// <returns>string</returns> public static string ToYesNoString(this Boolean boolean) { return boolean ? "Yes" : "No"; } }
或者你可以在后面的代码中使用ItemDataBound
事件。
除了我的客户端的数据库模式是空的位(即允许True / False / NULL)外,我和原始海报有相同的需求。 这里是我写的一些代码,显示是/否和处理潜在的空值。
代码隐藏:
public string ConvertNullableBoolToYesNo(object pBool) { if (pBool != null) { return (bool)pBool ? "Yes" : "No"; } else { return "No"; } }
前端:
<%# ConvertNullableBoolToYesNo(Eval("YOUR_FIELD"))%>
这是我一直这样做的:
<ItemTemplate> <%# Boolean.Parse(Eval("Active").ToString()) ? "Yes" : "No" %> </ItemTemplate>
希望有所帮助。
这工作:
Protected Sub grid_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grid.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.Cells(3).Text = "True" Then e.Row.Cells(3).Text = "Si" Else e.Row.Cells(3).Text = "No" End If End If End Sub
其中cells(3)
是具有布尔字段的列的列。