2008-12-04 3 views

Répondre

1

CheckBoxField se lie à un booléen. Vous pouvez convertir la chaîne en une valeur booléenne dans l'expression de liaison ou la convertir dans la déclaration db.

Il serait plus logique pour la base de données de stocker l'état de la case à cocher en tant que bit plutôt qu'en tant que chaîne. Alors ce problème disparaîtrait complètement.

Bien sûr, si vous avez besoin de stocker le troisième état «grisé», cela complique légèrement les choses, mais vous pouvez toujours stocker l'état en tant qu'int.

6

Cela devrait fonctionner:

Checked='<%# DataBinder.Eval(Container.DataItem, "MyStringField") = "1" %>' 

Normalement, une valeur de case à cocher serait mis en correspondance avec une valeur de bit dans votre base de données afin que vous obtiendriez pas ce problème.

+0

Presque; Tu me as sur la bonne voie: minty

+0

Vous ne devriez pas avoir besoin du convertisseur interne, n'est-ce pas? Également vous pourriez faire: Checked = '"1" == DataBinder.Eval (Container.DataItem, "MyStringField")' pour le même effet :) –

+0

(ajoutant le bon <%# %> que j'ai raté, bien sûr :) –

1

Je travaillais dans VB et j'ai essayé quelque chose comme ça

<asp:checkbox runat="server" id="chkCastCool" enabled="false" 
    checked='<%CType(DataBinder.Eval(Container.DataItem,"Cast_Cool").ToString().Replace("Y","True").Replace("N","False"),Boolean)%>'/> 
Questions connexes