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:
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> |
--la deuxième partie avec le second datagrid (que je viens de rajouter) :
Code:
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 :
Code:
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 |
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;)