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:
Et voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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
-- la première partie avec le 1er datagrid (pas de problème avec celui-là) :
--la deuxième partie avec le second datagrid (que je viens de rajouter) :
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
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>
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
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 :
Je précise que les 2 datagrids utilisent les mêmes tables mais pas les mêmes enregistrements :
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
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
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![]()
Partager