2010-04-20 19 views
0

J'ai un GridView auquel je lie un DataTable que j'ai créé manuellement. Le GridView et le dataTable contiennent deux colonnes, Name et isBusy. Mon GridView ressemble à ceciModifier/accéder aux données d'une colonne CheckBox dans un ASPX: GridView - C#

<Columns> 
    <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">   
    </asp:BoundField>  
    <asp:CheckBoxField DataField="isBusy" HeaderText="Busy" SortExpression="isBusy" /> 
</Columns> 

Cela fonctionne très bien, sauf que la colonne Occupé est non modifiable sauf si vous définissez une ligne spécifique en mode édition. J'ai besoin que la totalité de la colonne de cases à cocher soit vérifiable. Donc, je me suis converti la colonne à un modèle, et donc les colonnes ressemblent à ceci:

<Columns> 
    <asp:BoundField HeaderText="Name" DataField="Name" SortExpression="Name">   
    </asp:BoundField>  
    <asp:TemplateField HeaderText="Busy" SortExpression="isBusy"> 
     <ItemTemplate> 
     <asp:CheckBox ID="isBusy" runat="server" Checked='<%# Eval("isBusy") %>' oncheckedchanged="CheckBoxBusy_CheckedChanged" /> 
     </ItemTemplate> 
    </asp:TemplateField>  
</Columns> 

Maintenant, cela jette une erreur lors de l'exécution:

System.InvalidCastException was unhandled by user code 
    Message="Specified cast is not valid." 
    Source="App_Web_zzjsqlrr" 
    StackTrace: 
     at ASP.projects_aspx.__DataBinding__control24(Object sender, EventArgs e) in c:\Project\Users.aspx:line 189 
     at System.Web.UI.Control.OnDataBinding(EventArgs e) 
     at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) 
     at System.Web.UI.Control.DataBind() 
     at System.Web.UI.Control.DataBindChildren() 
    InnerException: 

Toute idée pourquoi cela se passe? L'étape suivante que je voudrais est de savoir comment mettre et obtenir l'état d'une case à cocher (n'ont pas pu trouver comment vérifier manuellement une case à cocher).

Répondre

0

Ok, je suis passé l'erreur coverting la valeur de case à cocher à un bool:

Vérifié = '<% # Convert.ToBoolean (Eval ("IsBusy"))%>'

Maintenant, je ne peut pas sembler trouver comment vérifier manuellement une case spécifique et générer un événement quand une case est cochée. Des idées?

+0

Vous ne pouvez pas simplement cocher la case en l'obtenant dans la colonne spécifique? – Ruben