2010-01-20 4 views
10

Pour la vie de moi je ne peux pas lier la propriété Vérifié d'un contrôle CheckBox dans un TemplateField (declaritively).Reliure vérifier la propriété d'un CheckBox dans un TemplateItem

J'ai essayé:

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

et

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

Je continue à voir un avertissement indiquant:

Impossible de créer un objet de type 'System.Boolean' à partir de son string représentation » « pour la « propriété Vérifié »

Qu'est-ce que je fais mal?

Répondre

17

Il est peut-être en raison des guillemets doubles que vous avez utilisé. Essayez:

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

Vous avez raison. Je ne vais pas travailler avec les guillemets doubles comme des citations externes – citronas

0

Eval est pour évaluer les expressions.

Essayez Bind.

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

Il est préférable de traiter ce via le code-behind dans le cas de RowDataBound du contrôle (en supposant qu'il est un gridview).

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

Note: Le code ABV peut contenir des erreurs ...

OU,

Récupérer les données de telle sorte que ce domaine particulier, la case à cocher tente de se lier à un champ devrait être de type bit (ie il peut avoir 1 ou 0).

3

Utilisez des guillemets simples autour de la valeur de la propriété:

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

1

C'est une question assez vieux, mais voici ce que je devais faire 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> 

car ma propriété n'était pas booléenne.

Questions connexes