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>
Était-ce utile?

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

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top