J'ai un ASP.NET GridView
avec une colonne mappée à un booléen. Je veux afficher "Oui"/"Non" au lieu de "Vrai"/"Faux". En fait, je veux "Ja"/"Nej" (en danois).
Est-ce possible?
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false">
<columns>
...
<asp:boundfield headertext="Active" datafield="Active" dataformatstring="{0:Yes/No}" />
...
</columns>
</asp:gridview>
J'utilise ce code pour VB:
<asp:TemplateField HeaderText="Active" SortExpression="Active">
<ItemTemplate><%#IIf(Boolean.Parse(Eval("Active").ToString()), "Yes", "No")%></ItemTemplate>
</asp:TemplateField>
Et cela devrait fonctionner pour C # (non testé):
<asp:TemplateField HeaderText="Active" SortExpression="Active">
<ItemTemplate><%# (Boolean.Parse(Eval("Active").ToString())) ? "Yes" : "No" %></ItemTemplate>
</asp:TemplateField>
Ajoutez une méthode à votre classe de page comme ceci:
public string YesNo(bool active)
{
return active ? "Yes" : "No";
}
Et puis dans votre TemplateField
vous Bind
en utilisant cette méthode:
<%# YesNo(Active) %>
Non, mais vous pouvez utiliser une colonne de modèle:
<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>
Vous pourriez utiliser un 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";
}
}
Ou vous pouvez utiliser l'événement ItemDataBound
dans le code derrière.
J'avais le même besoin que l'affiche d'origine, sauf que le schéma de base de données de mon client est un bit nullable (c'est-à-dire qu'il autorise True/False/NULL) Voici un code que j'ai écrit à la fois pour afficher Oui/Non et gérer les valeurs NULL potentielles.
Code-Behind:
public string ConvertNullableBoolToYesNo(object pBool)
{
if (pBool != null)
{
return (bool)pBool ? "Yes" : "No";
}
else
{
return "No";
}
}
L'extrémité avant:
<%# ConvertNullableBoolToYesNo(Eval("YOUR_FIELD"))%>
Voici comment je l'ai toujours fait:
<ItemTemplate>
<%# Boolean.Parse(Eval("Active").ToString()) ? "Yes" : "No" %>
</ItemTemplate>
J'espère que cela pourra aider.
Cela marche:
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
Où cells(3)
est la colonne de la colonne contenant le champ booléen.
C'est facile avec Format () - Fonction
Format(aBoolean, "YES/NO")
Veuillez trouver les détails ici: https://msdn.Microsoft.com/en-us/library/aa241719(v=vs.60).aspx