[3.5] ListView et DataBound
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
Citation:
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:
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:
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.