Исключение «Имя BindItem не существует в текущем контексте» - PullRequest
0 голосов
/ 10 октября 2018

Недавно я узнал, что вы можете использовать «BindItem» и «Item» непосредственно в разметке страницы aspx в контексте элементов управления с привязкой к данным, таких как GridView или DetailsView (указав атрибут ItemType).То, чего я сейчас пытаюсь достичь, - это встроенное сравнение элементов, таких как:

    <asp:RadioButton Text="All Assigned" ID="rb1" 
         Checked='<%# BindItem.AllAssigned %>' 
         runat="server" GroupName="AllAssigned" />
    <asp:RadioButton Text="Responsible only"  ID="rb2" 
         Checked='<%# !BindItem.AllAssigned %>' 
         runat="server" GroupName="AllAssigned" />

В этой ситуации мне нужно двустороннее связывание, поэтому я выбираю выражение BindItem.Но похоже, что выражения типа !BindItem.AllAssigned или BindItem.AllAssigned == false не работают в разметке.Они дают мне исключения, такие как

Имя BindItem не существует в текущем контексте

или

DataBinding: DataContext.MyEntity не содержит свойство с именем «false».

Что я должен написать для таких выражений?

1 Ответ

0 голосов
/ 10 октября 2018

Поскольку вы не можете использовать оператор логического отрицания с выражением привязки данных, вы можете использовать Eval() или DataBinder.Eval() внутри выражения привязки данных, чтобы использовать его, как в примере ниже:

<%-- alternative 1 --%>
<asp:RadioButton Text="Responsible only"  ID="rb2" 
         Checked='<%# !(bool)Eval("AllAssigned") %>' 
         runat="server" GroupName="AllAssigned" />

<%-- alternative 2 --%>
<asp:RadioButton Text="Responsible only"  ID="rb2" 
         Checked='<%# !Convert.ToBoolean(Eval("AllAssigned")) %>' 
         runat="server" GroupName="AllAssigned" />

Если вы хотите включитьПри двусторонней привязке вместо использования отдельных переключателей с разными идентификаторами используйте RadioButtonList с Bind(), установленным в свойстве SelectedValue, как в примере ниже:

<asp:RadioButtonList ID="rb" runat="server" SelectedValue='<%# Bind("AllAssigned") %>' RepeatDirection="Horizontal" ...>
    <asp:ListItem Text="All Assigned" Value="true"></asp:ListItem>
    <asp:ListItem Text="Responsible only" Value="false"></asp:ListItem>
</asp:RadioButtonList>

Затем вы можете получить выбранное значение переключателяиспользование rb.SelectedValue.

Проблема, связанная с данной: Привязка данных для RadioButtonList с использованием SelectedValue ... возможно?

...