69

我有一个GridView带有映射到布尔值的列的 ASP.NET。我想显示“是”/“否”而不是“真”/“假”。好吧,实际上我想要“Ja”/“Nej”(丹麦语)。

这可能吗?

<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false">
    <columns>
        ...
        <asp:boundfield headertext="Active" datafield="Active" dataformatstring="{0:Yes/No}" />
        ...
    </columns>
</asp:gridview>
4

9 回答 9

137

我将此代码用于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>
于 2008-11-24T19:30:56.337 回答
16

向您的页面类添加一个方法,如下所示:

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

然后在TemplateFieldBind使用这个方法:

<%# YesNo(Active) %>
于 2008-11-24T20:04:01.637 回答
7

不 - 但您可以使用模板列:

<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>
于 2008-10-19T19:39:50.237 回答
6

你可以使用 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";
    }
}
于 2008-12-10T17:24:47.583 回答
3

或者你可以ItemDataBound在后面的代码中使用事件。

于 2008-10-19T19:41:34.693 回答
2

除了我的客户的 db 模式是一个可为空的位(即,允许 True/False/NULL)之外,我的需求与原始海报相同。这是我编写的一些代码,用于显示是/否并处理潜在的空值。

代码隐藏:

public string ConvertNullableBoolToYesNo(object pBool)
{
    if (pBool != null)
    {
        return (bool)pBool ? "Yes" : "No";
    }
    else
    {
        return "No";
    }
}

前端:

<%# ConvertNullableBoolToYesNo(Eval("YOUR_FIELD"))%>
于 2010-12-08T20:36:08.630 回答
1

这就是我一直这样做的方式:

<ItemTemplate>
  <%# Boolean.Parse(Eval("Active").ToString()) ? "Yes" : "No" %>
</ItemTemplate>

希望有帮助。

于 2014-05-14T20:38:26.397 回答
0

这有效:

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)具有布尔字段的列的列在哪里。

于 2013-05-20T14:20:17.503 回答
0

使用 Format()-Function 很容易

Format(aBoolean, "YES/NO")

请在此处查找详细信息: https ://msdn.microsoft.com/en-us/library/aa241719(v=vs.60).aspx

于 2017-12-12T07:38:02.473 回答