Bonjour à tous et à toutes,

Voici mon problème : j'ai une fonction qui me permet de charger un datagrid avec un dataset. Le datagrid permet d'ajouter un item dans son footer. Cette fonction gère également la mise à jour de l'index en cas d'édition d'une ligne du datagrid. Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
 
Sub SqlDataGridIndex(ByVal DG As DataGrid, ByVal DA As SqlDataAdapter, Optional ByVal key As String = "", Optional ByVal index As Integer = 0)
 
        Dim DS As New DataSet
        DA.Fill(DS)
        If DS.Tables.Count <> 0 Then
            DG.DataSource = DS
            If key.Length <> 0 Then
                DG.EditItemIndex = index
                DG.DataKeyField = key
            End If
            DG.DataBind()
        End If
 
 
 End Sub
Mon problème c'est que qd le dataset est vide j'ai une erreur au niveau du databind, c'est pourquoi je fais le test avant de binder. Le problème c'est que s'il n'y a pas de databind (car le dataset est vide), le datagrid ne s'affiche pas du tout et donc je peux pas ajouter grâce au footer. En résumé je suis d'abord obligée de sélectionner des lignes avant de pouvoir en rajouter
Vous me direz qu'il suffit de créer une datatable pour mon dataset. Le problème c'est que ses colonnes devront correspondre au datagrid et donc ma fonction ne marchera plus que pour un datagrid

Ce que je trouve dommage c'est qu'avec un datareader je n'ai pas ce problème : même si le datareader n'a pas de résultat, le databind ne provoque pas d'erreur et donc j'ai au moins le header et le footer de mon datagrid qui s'affichent. Malheureusement avec le datareader ce sont les lignes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
If key.Length <> 0 Then
                DG.EditItemIndex = index
                DG.DataKeyField = key
End If
qui posent un problème d'ouverture de reader

une idée pour moi siouplait merci d'avance