Могу ли я преобразовать логическое значение в Yes / No в a ASP.NET GridView
у меня есть ASP.NET GridView
со столбцом, сопоставленным с логическим значением. Я хочу сделать отображение "Да"/"нет"вместо"True" / "False". Ну на самом деле я хочу "Ja"/"Nej" (на датском языке).
это возможно?
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false">
<columns>
...
<asp:boundfield headertext="Active" datafield="Active" dataformatstring="{0:Yes/No}" />
...
</columns>
</asp:gridview>
9 ответов:
Я использую этот код для VB:
<asp:TemplateField HeaderText="Active" SortExpression="Active"> <ItemTemplate><%#IIf(Boolean.Parse(Eval("Active").ToString()), "Yes", "No")%></ItemTemplate> </asp:TemplateField>
и это должно работать для C# (непроверено):
<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>
вы можете использовать миксин.
/// <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"; } }
у меня была та же потребность, что и исходный плакат, за исключением того, что схема db моего клиента является нулевым битом (т. е. позволяет использовать True/False/NULL). Вот код, который я написал для отображения Да / нет и обработки потенциальных нулей.
Код:
public string ConvertNullableBoolToYesNo(object pBool) { if (pBool != null) { return (bool)pBool ? "Yes" : "No"; } else { return "No"; } }
Front-End:
<%# 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)
столбец столбец, который имеет логическое поле.
Это легко с Format () - Function
Format(aBoolean, "YES/NO")
подробности здесь: https://msdn.microsoft.com/en-us/library/aa241719 (v=vs. 60). aspx