Привязка проверенного свойства CheckBox в TemplateItem - PullRequest
11 голосов
/ 20 января 2010

Для жизни я не могу связать свойство Checked элемента управления CheckBox в пределах TemplateField (в упрощенном виде). ​​

Я пробовал:

<asp:TemplateField>
    <ItemTemplate>
        <asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval("Deactivated")%>"></asp:CheckBox>
    </ItemTemplate>
<asp:TemplateField>

и

<asp:TemplateField>
    <ItemTemplate>
        <asp:CheckBox ID="deactivated" runat="server" checked="<%#Eval(Container.DataItem, "Deactivated")%>"></asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateField>      
</asp:TemplateField>

Я вижу предупреждение:

Невозможно создать объект типа 'System.Boolean' из его строкового представления '' для свойства 'Checked'

Что я делаю не так?

Ответы [ 5 ]

18 голосов
/ 20 января 2010

Это может быть из-за двойных кавычек, которые вы использовали. Попробуйте:

checked= '<%# Eval("Deactivated") %>'
3 голосов
/ 20 января 2010

Используйте одинарные кавычки вокруг значения свойства:

<asp:CheckBox ID="deactivated" runat="server" checked='<%#Eval("Deactivated")%>'></asp:CheckBox>

1 голос
/ 07 февраля 2014

Это довольно старый вопрос, но вот что я должен был сделать в VS2013, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

<asp:TemplateColumn ItemStyle-Width="50" HeaderText="Is Verified">
  <ItemTemplate>
    <asp:CheckBox ID="chkVerified" runat="server" AutoPostBack="true" EnableViewState="true" OnCheckedChanged="chkVerified_CheckedChanged" Checked='<%#DataBinder.GetPropertyValue(Container.DataItem,"IsVerified").ToString()=="0"%>' />

                        </ItemTemplate>
</asp:TemplateColumn>

потому что моя собственность не была логической.

1 голос
/ 20 января 2010

Лучше всего обрабатывать это с помощью кода в событии привязки строки к элементу управления (при условии, что это представление сетки).

if (e.Row.RowType == RowType.DataRow)
{
    CheckBox chk = (CheckBox) GridView1.FindControl("deactivated");
    chk.Checked = true;
}

Примечание: код abv может содержать ошибки ...

OR

Извлечение данных таким образом, что конкретное поле, к которому пытается привязаться флажок, должно быть полем типа бит (то есть оно может иметь либо 1, либо 0).

0 голосов
/ 20 января 2010

Eval для оценки выражений.

Попробуйте Bind.

checked='<%#Bind("Deactivated")%>'
...