ASP.NET GRIDVIEW에서 부울을 예/아니오로 변환 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/216833

  •  03-07-2019
  •  | 
  •  

문제

asp.net이 있습니다 GridView 컬럼이 부울에 매핑되어 있습니다. "true"/"false"대신 "yes"/"no"를 표시하고 싶습니다. 실제로 나는 "ja"/"nej"(덴마크어)를 원합니다.

이게 가능해?

<asp:gridview id="GridView1" runat="server" autogeneratecolumns="false">
    <columns>
        ...
        <asp:boundfield headertext="Active" datafield="Active" dataformatstring="{0:Yes/No}" />
        ...
    </columns>
</asp:gridview>
도움이 되었습니까?

해결책

이 코드를 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>

다른 팁

다음과 같은 페이지 클래스에 메소드를 추가하십시오.

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

그리고 당신의 TemplateFieldBind 이 방법 사용 :

<%# YesNo(Active) %>

아니 -하지만 템플릿 열을 사용할 수 있습니다.

<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>

믹스 인을 사용할 수 있습니다.

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

또는 사용할 수 있습니다 ItemDataBound 뒤에있는 코드에서 이벤트.

클라이언트의 DB 스키마가 무효 비트 (즉, 참/거짓/널 허용)라는 점을 제외하고는 원래 포스터와 같은 필요가있었습니다. 다음은 예/아니오를 디스플레이하고 잠재적 널을 처리하기 위해 작성한 몇 가지 코드입니다.

코드-홀드 :

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

프론트 엔드 :

<%# ConvertNullableBoolToYesNo(Eval("YOUR_FIELD"))%>

이것이 내가 항상 한 방식입니다.

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

도움이되기를 바랍니다.

이것은 작동합니다 :

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) 부울 필드가있는 열의 열입니다.

format ()-함수는 쉽습니다

Format(aBoolean, "YES/NO")

자세한 내용은 다음을 찾으십시오.https://msdn.microsoft.com/en-us/library/aa241719(v=vs.60).aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top