64 votes

Puis-je convertir un booléen en Oui / Non dans un ASP.NET GridView

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>
 

128voto

travis Points 14676

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>
 

14voto

Rune Grimstad Points 17775

Ajoutez une méthode à votre classe de page comme ceci:

 public string YesNo(bool active) 
{
  return active ? "Yes" : "No";
}
 

Et ensuite, dans votre champ Tempate, vous liez en utilisant cette méthode:

 <%# YesNo(Active) %>
 

7voto

Mark Brackett Points 46824

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>
 

6voto

Corey Coto Points 126

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";
    }
}
 

3voto

Paco Points 6156

Ou vous pouvez utiliser l'événement ItemDataBound dans le code derrière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X