我可以在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)是具有布尔字段的列的列。