Могу ли я преобразовать логическое значение в Да/Нет в ASP.NET GridView
У меня есть ASP.NET GridView
с столбцом, сопоставленным с булевым. Я хочу показать "Да" / "Нет" вместо "Истина" / "Ложь". Ну на самом деле я хочу "Ja" / "Nej" (на датском языке).
Возможно ли это?
<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false">
<columns>
...
<asp:boundfield headertext="Active" datafield="Active" dataformatstring="{0:Yes/No}" />
...
</columns>
</asp:gridview>
Ответы
Ответ 1
Я использую этот код для VB:
<asp:TemplateField HeaderText="Active" SortExpression="Active">
<ItemTemplate><%#IIf(Boolean.Parse(Eval("Active").ToString()), "Yes", "No")%></ItemTemplate>
</asp:TemplateField>
И это должно работать для С# (untested):
<asp:TemplateField HeaderText="Active" SortExpression="Active">
<ItemTemplate><%# (Boolean.Parse(Eval("Active").ToString())) ? "Yes" : "No" %></ItemTemplate>
</asp:TemplateField>
Ответ 2
Добавьте метод в свой класс страницы следующим образом:
public string YesNo(bool active)
{
return active ? "Yes" : "No";
}
И затем в вашем TemplateField
вы Bind
, используя этот метод:
<%# YesNo(Active) %>
Ответ 3
Нет, но вы можете использовать столбец шаблона:
<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>
Ответ 4
Вы можете использовать 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";
}
}
Ответ 5
Или вы можете использовать событие ItemDataBound
в коде.
Ответ 6
У меня была такая же потребность, как и у оригинального плаката, за исключением того, что моя схема db-клиента является битом с нулевым значением (т.е. допускает True/False/NULL). Здесь некоторый код, который я написал для обоих, показывает Да/Нет и обрабатывает потенциальные нули.
Code-Behind:
public string ConvertNullableBoolToYesNo(object pBool)
{
if (pBool != null)
{
return (bool)pBool ? "Yes" : "No";
}
else
{
return "No";
}
}
Front-End:
<%# ConvertNullableBoolToYesNo(Eval("YOUR_FIELD"))%>
Ответ 7
Так я всегда это делал:
<ItemTemplate>
<%# Boolean.Parse(Eval("Active").ToString()) ? "Yes" : "No" %>
</ItemTemplate>
Надеюсь, что это поможет.
Ответ 8
Это работает:
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)
- столбец столбца с булевым полем.
Ответ 9
Легко с помощью Format() - Function
Format(aBoolean, "YES/NO")
Подробнее здесь:
https://msdn.microsoft.com/en-us/library/aa241719(v=vs.60).aspx