如何根据条件设置GridView绑定字段的值

时间:2019-01-16 20:52:33

标签: c# asp.net gridview boundfield

我正在寻找一种基于条件将值绑定到GridView控件的列的解决方案。

假设我有一个财产:

public bool Perm
{
    get;
    set;
}

基于该属性,我想将绑定字段设置为特定值。

我在这里得到一个列表:

List<MyObject> obj = myservice.GetData().toList();

MyObject具有属性FullBankAccHiddenBankAcc

基于Perm属性的值,我想显示一个值或另一个值:

if (Perm)
{
   // bind a column to a HiddenBankAcc
}
else
{
   // bind a column to a FullBankAcc
}

这是GridView列:

<asp:BoundField DataField="Display the value based on a property" HeaderText="ABA"/>

我该怎么做?

3 个答案:

答案 0 :(得分:0)

一种方法是在MyObject类中添加另一个只读字段,该字段包装所需的逻辑并将列绑定到该字段。

    public string DisplayValue
    {
        get {
             if (Perm)
             {
               return HiddenBankAcc;
            }
            else
            {
               return FullBankAcc;
            }
       }
   }

答案 1 :(得分:0)

如果您切换到TemplateField,则可以内联。

<asp:TemplateField HeaderText="BankAcc">
    <ItemTemplate>
        <%# string.IsNullOrEmpty(Eval("HiddenBankAcc").ToString()) ? Eval("FullBankAcc") : Eval("HiddenBankAcc")%>
    </ItemTemplate>
</asp:TemplateField>

或作为布尔值

<asp:TemplateField HeaderText="BankAcc">
    <ItemTemplate>
        <%# Convert.ToBoolean(Eval("FullBankAcc")) ? Eval("FullBankAcc") : Eval("HiddenBankAcc")%>
    </ItemTemplate>
</asp:TemplateField>

答案 2 :(得分:0)

1。)在页面代码中的

后面创建函数。
   public string DisplayValue(Perm)
   {
             if (Perm)
             {
               return HiddenBankAcc;
            }
            else
            {
               return FullBankAcc;
            }
   }

2。)假设变量“ Perm”的值在asp页面的gridview数据源中

<asp:BoundField HeaderText="ABA">
   <asp:Label runat="server" Text='<%# DisplayValue((bool)Eval("Perm"))%>' </asp:Label>
</asp:BoundField>