Pb 2 datagrid dans 1 même page aspx ?
	
	
		Bonjour,
j'aimerais utilisé 2 datagrid dans une même page aspx mais je n'y arrive pas !
Voici le message d'erreur que j'obtiens: 
	Code:
	
AllowCustomPaging doit avoir la valeur true, et VirtualItemCount doit être défini pour un DataGrid avec l'ID DG_ConsultAdresse lorsque AllowPaging a la valeur true et que le datasource sélectionné n'implémente pas ICollection
 Et voici mon code :
-- la première partie avec le 1er datagrid (pas de problème avec celui-là) :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 
 |  
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="BonsLivraisonsCtrlAdresse.ascx.vb" Inherits="Sagem.DNN.Modules.BonsLivraisonsCtrlAdresse.BonsLivraisonsCtrlAdresse" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
 
<asp:datagrid id="DG_CtrlAdresse" runat="server" Width="1400px" MaxWidth="1800px" AllowSorting="True"
	CellPadding="0" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#3366CC"
	AutoGenerateColumns="False" GridLines="None"
	OnEditCommand="Edit"
     OnUpdateCommand="Update"
     OnCancelCommand="Cancel">
     <EditItemStyle backcolor="#FFFF80" forecolor="Black" font-italic="False"
                     font-names="Times New Roman" font-strikeout="False" font-underline="False"
                     font-overline="False" font-bold="False">
    </EditItemStyle>
    <AlternatingItemStyle BackColor="Honeydew"></AlternatingItemStyle>
	<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
	<ItemStyle Height="20px" ForeColor="#003399" BackColor="White"></ItemStyle>
	<HeaderStyle Height="20px" ForeColor="#CCCCFF" BackColor="#003399"></HeaderStyle>
	<FooterStyle Height="20px" ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
	<Columns> 
	<asp:EditCommandColumn HeaderText="Action" HeaderStyle-ForeColor="red" HeaderStyle-Font-Bold="True"
	HeaderStyle-HorizontalAlign="Left" ItemStyle-width="100px"
	ItemStyle-HorizontalAlign="Left" ItemStyle-ForeColor="red" ItemStyle-Font-Bold="True"
	CancelText="Annuler" UpdateText="MAJ" EditText="Modifier">
	</asp:EditCommandColumn>
	<asp:BoundColumn DataField="Ad_idAdresse" HeaderText="Adresse" Visible="false" ReadOnly="true"></asp:BoundColumn>
	<asp:BoundColumn DataField="BonOK" HeaderText="Bons" Visible="true" ReadOnly="true"  ItemStyle-Width="40px"></asp:BoundColumn>
	<asp:BoundColumn DataField="En_sNom" HeaderText="Entreprise" ReadOnly="true" ItemStyle-Width="200px"></asp:BoundColumn>
	<asp:BoundColumn DataField="Si_sNomSite" HeaderText="Site" ReadOnly="true" ItemStyle-Width="100px"></asp:BoundColumn>
	<asp:TemplateColumn HeaderText="Adresse">
		<ItemTemplate>
             <%#Container.DataItem("Ad_sAdresse")%>
        </ItemTemplate>
		<EditItemTemplate>
			<asp:TextBox id="TextBox1" name="TextBox1" Value='<%#Container.DataItem("Ad_sAdresse")%>' runat="Server" Width="400" ></asp:TextBox>
		</EditItemTemplate>
		<ItemStyle Width="500px"></ItemStyle>
	</asp:TemplateColumn>
		<asp:BoundColumn DataField="Vi_sNom" HeaderText="Ville" ReadOnly="true" ItemStyle-Width="150px"></asp:BoundColumn>
		<asp:BoundColumn DataField="Pa_sNom" HeaderText="Pays" ReadOnly="true" ItemStyle-Width="150px"></asp:BoundColumn>
		<asp:TemplateColumn HeaderText="Cocher pour<br/>invalider l'adresse" ItemStyle-HorizontalAlign="Center">
			<ItemTemplate>
				<asp:CheckBox ID="chkSelection"  Runat="server" />
			</ItemTemplate>
			<ItemStyle HorizontalAlign="Center" width="150px"></ItemStyle>
		</asp:TemplateColumn>
	</Columns>
	<PagerStyle Height="20px" HorizontalAlign="Left" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
<TABLE id="Table2" cellSpacing="0" cellPadding="1" Width="1400px" MaxWidth="1800px" border="0">
	<TR>
	<TD width="1000"></TD>
	<TD><asp:button id="Btn_ValiderAd" OnClick="ValiderAdresse" Height="32px" Width="128" runat="server" Text="Valider"></asp:button></TD>
	<TD height="30px"></TD>
	</TR>
</TABLE> | 
 --la deuxième partie avec le second datagrid (que je viens de rajouter) :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 
 |  
 
 
<TABLE id="Table3" cellSpacing="0" cellPadding="1" width="616px" border="0">
	<TR>
	<TD width="70"></TD>
	<TD><asp:dropdownlist id="Ddl_Entreprise" Width="400" runat="server" Enabled="True" AutoPostBack="True"></asp:dropdownlist></TD>
	</TR>
</TABLE>
<asp:datagrid id="DG_ConsultAdresse" runat="server" Width="1400px" MaxWidth="1800px" AllowCustomPaging="False" AllowPaging="True" AllowSorting="True"
	CellPadding="0" BackColor="White" BorderWidth="1px" BorderStyle="None" BorderColor="#3366CC"
	AutoGenerateColumns="False" GridLines="None" PageSize="10">
     <EditItemStyle backcolor="#FFFF80" forecolor="Black" font-italic="False"
                     font-names="Times New Roman" font-strikeout="False" font-underline="False"
                     font-overline="False" font-bold="False">
    </EditItemStyle>
    <AlternatingItemStyle BackColor="Honeydew"></AlternatingItemStyle>
	<SelectedItemStyle Font-Bold="True" ForeColor="#CCFF99" BackColor="#009999"></SelectedItemStyle>
	<ItemStyle Height="15px" ForeColor="#003399" BackColor="White"></ItemStyle>
	<HeaderStyle Height="15px" ForeColor="#CCCCFF" BackColor="#003399"></HeaderStyle>
	<FooterStyle Height="15px" ForeColor="#003399" BackColor="#99CCCC"></FooterStyle>
	<Columns> 
	<asp:EditCommandColumn HeaderText="Action" HeaderStyle-ForeColor="red" HeaderStyle-Font-Bold="True"
	HeaderStyle-HorizontalAlign="Left" ItemStyle-width="100px"
	ItemStyle-HorizontalAlign="Left" ItemStyle-ForeColor="red" ItemStyle-Font-Bold="True">
	</asp:EditCommandColumn>
	<asp:BoundColumn DataField="Si_sNomSite" HeaderText="Site" ReadOnly="true" ItemStyle-Width="100px"></asp:BoundColumn>
	<asp:BoundColumn DataField="Ad_sAdresse" HeaderText="Adresse" ReadOnly="true" ItemStyle-Width="500px"></asp:BoundColumn>
	<asp:BoundColumn DataField="Vi_sNom" HeaderText="Ville" ReadOnly="true" ItemStyle-Width="150px"></asp:BoundColumn>
	<asp:BoundColumn DataField="Pa_sNom" HeaderText="Pays" ReadOnly="true" ItemStyle-Width="150px"></asp:BoundColumn>
	</Columns>
	<PagerStyle Height="20px" HorizontalAlign="Left" ForeColor="#003399" BackColor="#99CCCC" Mode="NumericPages"></PagerStyle>
</asp:datagrid> | 
 
et le code behind :
	Code:
	
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 
 |  
Option Strict Off
 
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.Control
Imports System.Web.UI.WebControls.LinkButton
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls.HtmlGenericControl
 
Namespace Sagem.DNN.Modules.BonsLivraisonsCtrlAdresse
 
    Public MustInherit Class BonsLivraisonsCtrlAdresse
		Inherits Entities.Modules.PortalModuleBase
		Implements Entities.Modules.IActionable
		Implements Entities.Modules.IPortable
        Implements Entities.Modules.ISearchable
        Private adresse As adresse
        Private entrepriseExpeditrice As Entreprise
        Protected WithEvents Btn_ValiderAd As System.Web.UI.WebControls.Button
        Protected WithEvents DG_CtrlAdresse As System.Web.UI.WebControls.DataGrid
        Protected WithEvents DG_ConsultAdresse As System.Web.UI.WebControls.DataGrid
        Protected WithEvents Ddl_Entreprise As System.Web.UI.WebControls.DropDownList
 
#Region "Controls"
#End Region
 
#Region "Event Handlers"
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim i As Integer
            Dim temp As Integer
 
            adresse = New adresse
 
            If Ddl_Entreprise.SelectedValue = "" Then
                temp = 0
            Else
                temp = Ddl_Entreprise.SelectedValue
            End If
 
            If temp = 0 Then
                entrepriseExpeditrice = New Entreprise(0)
            Else
                entrepriseExpeditrice = New Entreprise(temp)
            End If
 
            'chargement du DataGrid
            If Not Page.IsPostBack Then
                AfficherAdresses()
                AfficherEntreprise()
 
                ' if Page.IsPostBack
            Else
                'si un nom a été sélectionné dans le combo Entreprise
                If entrepriseExpeditrice.IdEntreprise > 0 Then
                    DG_ConsultAdresse.DataSource = adresse.ListerEntreprise(entrepriseExpeditrice.IdEntreprise)
                    DG_ConsultAdresse.DataBind()
                End If
 
            End If
 
        End Sub
 
        Private Sub AfficherAdresses()
            Dim s As Double
            adresse = New Adresse
 
            DG_CtrlAdresse.DataSource = adresse.ListerNew()
            DG_CtrlAdresse.DataBind()
            s = DG_CtrlAdresse.Width.Value
        End Sub
 
        Private Sub AfficherEntreprise()
            Dim i As Integer
 
            Ddl_Entreprise.SelectedIndex = -1
            Ddl_Entreprise.DataSource = entrepriseExpeditrice.Lister()
            Ddl_Entreprise.DataValueField = "En_idEntreprise"
            Ddl_Entreprise.DataTextField = "En_sNom"
            Ddl_Entreprise.DataBind()
            For i = 0 To Ddl_Entreprise.Items.Count - 1
                If Ddl_Entreprise.Items(i).Value = entrepriseExpeditrice.IdEntreprise Then
                    Ddl_Entreprise.SelectedIndex = i
                End If
            Next
 
            If Not Ddl_Entreprise.SelectedItem Is Nothing Then
                entrepriseExpeditrice.IdEntreprise = Ddl_Entreprise.SelectedValue
            End If
        End Sub
 
        Sub Edit(ByVal Sender As Object, ByVal e As DataGridCommandEventArgs)
 
            ' Passage en mode édition l'élement sélectionné
            DG_CtrlAdresse.EditItemIndex = e.Item.ItemIndex
 
            ' Rechargement du DataGrid
            adresse = New adresse
            DG_CtrlAdresse.DataSource = adresse.ListerNew()
            DG_CtrlAdresse.DataBind()
 
        End Sub
 
        Sub Update(ByVal Sender As Object, ByVal e As DataGridCommandEventArgs)
            ' Déclaration des différents objets
            Dim sRec As String
            Dim TempIdAdresse As String
            Dim TempAdresse As String
 
            ' Récupération de l'ID de la classe et des données saisies
            TempIdAdresse = e.Item.Cells(1).Text
            TempAdresse = Request.Form.Item(9).ToString()
 
            adresse = New adresse(CInt(TempIdAdresse))
            adresse._Adresse = TempAdresse
 
            adresse.Update()
 
            ' Indication de l'absence d'élément sélectionné
            DG_CtrlAdresse.EditItemIndex = -1
 
            AfficherAdresses()
 
        End Sub
 
        Sub Cancel(ByVal Sender As Object, ByVal e As DataGridCommandEventArgs)
 
            ' Indication de l'absence d'élément sélectionné
            DG_CtrlAdresse.EditItemIndex = -1
 
            ' Rechargement du DataGrid
            AfficherAdresses()
 
        End Sub
 
        Sub ValiderAdresse(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Dim sReq As String
            Dim TempAdresse As String
            Dim l As Integer
            Dim i As Integer
 
            l = DG_CtrlAdresse.Items.Count - 1
 
            For i = 0 To l
                adresse = New adresse(CInt(DG_CtrlAdresse.Items(i).Cells(1).Text))
                If CType(DG_CtrlAdresse.Items(i).FindControl("chkSelection"), CheckBox).Checked Then
                    If adresse.TestAdresseBon Then
                        adresse.UpdateInvalide()
                    Else
                        adresse.Supprimer()
                    End If
                Else
                    adresse.UpdateValide()
                End If
            Next
 
            ' Indication de l'absence d'élément sélectionné
            DG_CtrlAdresse.EditItemIndex = -1
 
            ' Rechargement du DataGrid
            AfficherAdresses()
 
        End Sub
 
        Private Sub DG_ConsultAdresse_PageIndexChanged1(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DG_ConsultAdresse.PageIndexChanged
            DG_ConsultAdresse.CurrentPageIndex = e.NewPageIndex
            If entrepriseExpeditrice.IdEntreprise > 0 Then
                DG_ConsultAdresse.DataSource = adresse.ListerEntreprise(entrepriseExpeditrice.IdEntreprise)
 
            End If
            DG_ConsultAdresse.DataBind()
        End Sub
 
#End Region
 
#Region "Optional Interfaces"
        Public ReadOnly Property ModuleActions() As Entities.Modules.Actions.ModuleActionCollection Implements Entities.Modules.IActionable.ModuleActions
            Get
                Dim Actions As New Entities.Modules.Actions.ModuleActionCollection
                Actions.Add(GetNextActionID, Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile), Entities.Modules.Actions.ModuleActionType.AddContent, "", "", EditUrl(), False, DotNetNuke.Security.SecurityAccessLevel.Edit, True, False)
                Return Actions
            End Get
        End Property
 
        Public Function ExportModule(ByVal ModuleID As Integer) As String Implements Entities.Modules.IPortable.ExportModule
            ' included as a stub only so that the core knows this module Implements Entities.Modules.IPortable
        End Function
 
        Public Sub ImportModule(ByVal ModuleID As Integer, ByVal Content As String, ByVal Version As String, ByVal UserID As Integer) Implements Entities.Modules.IPortable.ImportModule
            ' included as a stub only so that the core knows this module Implements Entities.Modules.IPortable
        End Sub
 
        Public Function GetSearchItems(ByVal ModInfo As Entities.Modules.ModuleInfo) As Services.Search.SearchItemInfoCollection Implements Entities.Modules.ISearchable.GetSearchItems
            ' included as a stub only so that the core knows this module Implements Entities.Modules.ISearchable
        End Function
 
#End Region
 
#Region " Web Form Designer Generated Code "
 
        'This call is required by the Web Form Designer.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
 
        End Sub
 
        'NOTE: The following placeholder declaration is required by the Web Form Designer.
        'Do not delete or move it.
        Private designerPlaceholderDeclaration As System.Object
 
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: This method call is required by the Web Form Designer
            'Do not modify it using the code editor.
            InitializeComponent()
        End Sub
 
#End Region
 
    End Class
 
End Namespace | 
 Je précise que les 2 datagrids utilisent les mêmes tables mais pas les mêmes enregistrements :
le premier datagrid affiche les nouvelles adresses (à valider ou à invalider) et le second les adresses déjà existantes (pour permettre à l'utilisateur de comparer avec les nouvelles )
J'ai recherché sur d'autres sites et j'ai vu quelques trucs sur ICollection (http://msdn.microsoft.com/fr-fr/library/bb469838.aspx : " la source de données des contrôles ASP.NET est un ICollection  générique, pour offrir une souplesse maximale à votre choix de sources de données" mais je ne vois pas comment utiliser ça dans mon cas ?)
merci d'avance;)