Datagrid et checkbox

dedzep Messages postés 54 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 8 février 2007 - 1 juil. 2004 à 10:21
cs_blueghost Messages postés 7 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 30 août 2005 - 11 oct. 2005 à 11:38
datagrid et checkbox

je souhaite comprendre de maniere simple (je suis assez nul) comment recuperer les valeurs dans un datagrid en fonction d'un checkbox

j'ai visionne de nombreux exemples d'ailleurs plutot sur des sites US, ils fonctionnent parfaitement mais dès que je les adapte (changement de la chaine de connection + modif pour access)
J'ai meme trouve ici une solution plutot judicieuse de J-on-Line mais...
je me heurte a l'erreur suivante :

L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre : index
Ligne 341 : '
Ligne 342 : If CType(Datagrid1.Items(i).FindControl("SelectionBox"), CheckBox).Checked Then
Ligne 343 : sKeys.Add(Datagrid1.DataKeys(Datagrid1.Items(i).ItemIndex).ToString)
Ligne 344 : End If
Ligne 345 : Next


Fichier source : f:\inetpub\wwwroot\admin\vueProd_Compat.aspx.vb Ligne : 343

une piste a vous soumettre
mon datagrid n'affiche pas toute la base mais seulement les enregistrements correspondant à un droplist.
Donc je resume :
1/ l'utilisateur choisi dans un droplist une famille de produit
2/ le datagrid affiche les enregistrement pour cette famille
3/ l'utilisateur peut alors utiliser des checkbox dans ce datagrid pour effectuer une action

voici mon datagrid

<TD class= "textecourant" colSpan="5">

<HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="Silver" BackColor="Gray"></HeaderStyle>
<Columns>

<HeaderStyle Width="20%"></HeaderStyle>


<FooterStyle HorizontalAlign ="Center"></FooterStyle>
<FooterTemplate>

</FooterTemplate>

<HeaderStyle Width="30%"></HeaderStyle>

<HeaderStyle Width="40%"></HeaderStyle>

<HeaderStyle Width="10%"></HeaderStyle>

</Columns>

</TD>

voici mon code behind

Private Sub Datagrid1_ItemCommand(ByVal source As Object, ByVal e As DataGridCommandEventArgs) Handles Datagrid1.ItemCommand
If e.CommandName = "AjoutBatch" Then

'Dim rowCount As Integer = 0
'Dim gridSelections As StringBuilder = New StringBuilder

'Loop through each DataGridItem, and determine which CheckBox controls
'have been selected.
'Dim Datagrid1Item As DataGridItem
'For Each Datagrid1Item In Datagrid1.Items

'Dim myCheckbox As CheckBox = CType(Datagrid1Item.Cells(0).Controls(1), CheckBox)
'If myCheckbox.Checked = True Then
'rowCount += 1
'gridSelections.AppendFormat("The checkbox for {0} was selected
", _
'Datagrid1.DataKeys(Datagrid1Item.ItemIndex).ToString())
'End If
'Next
'gridSelections.Append("<hr>")
'gridSelections.AppendFormat("Total number selected is: {0}
", rowCount.ToString())
'Message.Text = gridSelections.ToString()

Dim ligne As DataGridItem
Dim sKeys As New ArrayList
Dim i As Integer
Dim l As Integer
l = Datagrid1.Items.Count - 1
Trace.Warn("-------L :-" & l.ToString & "-")
For i = 0 To l
'
If CType(Datagrid1.Items(i).FindControl("SelectionBox"), CheckBox).Checked Then
sKeys.Add(Datagrid1.DataKeys(Datagrid1.Items(i).ItemIndex).ToString)
End If
Next

'If sKeys.Count <> 0 Then AjouteItems(sKeys)
End If

End Sub

j'avoue ne pas bien comprendre la logique de ce qui est ecrit donc je suis incapable de comprendre d'ou vient l'erreur.

Merci pour votre aide

1 réponse

cs_blueghost Messages postés 7 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 30 août 2005
11 oct. 2005 à 11:38
Bonjour,
As tu trouvé une solution ,j'ai le même problème aujourd'hui.
Merci .
Mat.
0
Rejoignez-nous