2010-01-20 6 views
10

Für die Lebensdauer von mir kann ich die Checked-Eigenschaft eines CheckBox-Steuerelements innerhalb eines TemplateField (deklarativ) nicht binden.Binden der Checked-Eigenschaft einer CheckBox innerhalb eines TemplateItems

Ich habe versucht:

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

und

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

Ich sehe ständig eine Warnung besagt:

kann nicht ein Objekt des Typs erstellen 'System.Boolean' von ihm String ist Darstellung '' für die Eigenschaft 'Geprüft'

Was mache ich falsch?

Antwort

17

Es kann an den doppelten Anführungszeichen liegen, die Sie verwendet haben. Versuchen:

checked= '<%# Eval("Deactivated") %>' 
+0

Sie haben Recht. Ich werde nicht mit den Anführungszeichen als äußere Anführungszeichen arbeiten – citronas

0

Eval dient zum Auswerten von Ausdrücken.

Versuchen Bind.

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

Es ist am besten, dies in der RowDataBound Veranstaltung Kontrolle über den Code-behind zu behandeln (vorausgesetzt, es ist ein gridview ist).

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

Hinweis: Die ABV-Code kann Fehler enthalten ...

OR,

die Daten in einer solchen Art und Weise abzurufen, dass bestimmte Feld das Kontrollkästchen, um zu binden versucht, ein Feld sein sollte vom Typ bit (dh es kann entweder 1 oder 0 haben).

3

Benutzen Sie rund um die Immobilie Wert:

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

1

Dies ist eine ziemlich alte Frage, aber hier ist, was ich in VS2013 zu tun hatte, 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> 

weil meine Eigenschaft nicht boolean war.

Verwandte Themen