Как установить значение связанного поля GridView на основе условия - PullRequest
0 голосов
/ 16 января 2019

Я ищу решение для привязки значения к столбцу элемента управления GridView на основе условия.

Допустим, у меня есть свойство:

public bool Perm
{
    get;
    set;
}

Основываясь на этом свойстве, я хочу установить для привязанного поля определенное значение.

Здесь я получаю список:

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

MyObject обладает свойствами FullBankAcc и HiddenBankAcc.

На основе значения свойства 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 голосов
/ 17 января 2019

Если вы переключитесь на 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>
0 голосов
/ 17 января 2019

1.) Создайте функцию в коде вашей страницы за

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

2.) Предполагая, что значение переменной "Perm" находится в источнике данных вашего gridview, на странице aspx

<asp:BoundField HeaderText="ABA">
   <asp:Label runat="server" Text='<%# DisplayValue((bool)Eval("Perm"))%>' </asp:Label>
</asp:BoundField>
0 голосов
/ 17 января 2019

Одним из способов было бы добавить другое поле только для чтения к вашему классу MyObject, которое оборачивает логику, которую вы хотите, и привязывает столбец к этому полю.

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