Salut,

J'ai une page contenant un ListView et un DataPager. Selon la page en cours je souhaite produire du javascript dynamiquement.

Pour cela j'aimerais utiliser l'évènement ListView.DataBound afin d'accéder à toutes les données du ListView. Mais je me trouve avec
La référence d'objet n'est pas définie à une instance d'un objet
lorsque je souhaite utiliser un DataItem dans ListView.DataBound.

Voici le code aspx :
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
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="test_Default" Trace="true" %>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="carte" style="width:400px; height:400px;"></div>
 
    <asp:DataPager ID="DataPager1" 
        PagedControlID="ListView1" 
        PageSize="5" 
        runat="server">
        <Fields>
            <asp:NextPreviousPagerField PreviousPageText="<<" NextPageText=">>" />
        </Fields>
    </asp:DataPager>
    <asp:ListView ID="ListView1" 
        DataSourceID="SqlDataSource1" 
        runat="server">
        <LayoutTemplate>
            <asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
        </LayoutTemplate>
        <ItemTemplate>
            <p><%#Eval("REFERENCE")%></p>
        </ItemTemplate>
    </asp:ListView>
 
    <asp:SqlDataSource ID="SqlDataSource1" 
        ConnectionString="<%$ ConnectionStrings:BD %>" 
        SelectCommandType="StoredProcedure" 
        SelectCommand="PSe"
        runat="server">
    </asp:SqlDataSource>
    </form>
</body>
</html>
le code vb :
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
Imports System.Data
 
Partial Class test_Default
    Inherits System.Web.UI.Page
 
    Protected Sub ListView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DataBound
        For Each item As ListViewDataItem In sender.items
            Dim ligne As DataRowView = item.DataItem
            Response.Write(ligne.Item("REFERENCE") & "<br />")    '-- NullReferenceException
        Next
    End Sub
 
    Protected Sub ListView1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
        Dim ligne As DataRowView = CType(e.Item, ListViewDataItem).DataItem
        Response.Write(ligne.Item("REFERENCE") & "<br />")        '-- OK
    End Sub
End Class
Lorsque je fais appelle à un DataItem dans ItemDataBound le response.write se déroule correctement, mais cela ne me convient que moyennement car cet évènement survient cinq fois. Or, je souhaite utiliser DataBound car l'évènement ne survient qu'une fois et j'aimerais accéder à toutes les données d'un coup.

Voyez-vous où je veux en venir? Peut-être avez-vous une meilleure façon de faire, je serais preneur avec grand plaisir.

Si je n'ai pas été clair n'hésitez pas à revenir vers moi.

Merci par avance.