Puis-je convertir un booléen en Oui / Non dans un ASP.NET GridView
Question
J'ai un ASP.NET GridView
avec une colonne mappée sur un booléen. Je souhaite 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>
La solution
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>
Autres conseils
Ajoutez une méthode à votre classe de page comme ceci:
public string YesNo(bool active)
{
return active ? "Yes" : "No";
}
Et dans votre TemplateField
, vous Liez
en utilisant cette méthode:
<%# YesNo(Active) %>
Nope - 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 pouvez 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";
}
}
Vous pouvez également utiliser l'événement ItemDataBound
dans le code situé derrière.
J'avais le même besoin que l'affiche originale, 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 aux deux 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";
}
}
Front-End:
<%# ConvertNullableBoolToYesNo(Eval("YOUR_FIELD"))%>
Voici comment je l'ai toujours fait:
<ItemTemplate>
<%# Boolean.Parse(Eval("Active").ToString()) ? "Yes" : "No" %>
</ItemTemplate>
L’espoir que cela aide.
Ceci fonctionne:
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ù cellules (3)
est la colonne de la colonne contenant le champ booléen.
C'est simple 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