2009-05-15 6 views
1

J'ai un ListView sur ma page de paiement avec un ItemTemplate qui construit une table d'articles commandés par le client. Je veux ajouter un total dans le pied de la table, je le balisage suivant:Remplir ListView avec les données du serveur

<asp:ListView ID="lvOrderSummary" runat="server"> 
    <LayoutTemplate> 
    <table id="tblOrderSummary"> 
     <tr> 
     <td><b>Title</b></td> 
     <td><b>Cost</b></td> 
     </tr> 
     <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
     <tr> 
     <td><b>Total Cost:</b></td> 
     <td><%# GetTotalCost().ToString()%></td> 
     </tr> 
    </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
    <tr> 
     <td><%#Eval("Title") %></td> 
     <td><%#Eval("Cost") %> </td> 
    </tr> 
    </ItemTemplate> 
</asp:ListView> 

J'ai une méthode côté serveur appelé GetTotalCost qui retourne la valeur que je demande. Le problème que j'ai est que cette méthode n'est jamais appelée. J'ai aussi essayé et au lieu d'utiliser:

<td><%# GetTotalCost().ToString()%></td> 

J'ai essayé d'utiliser

<td id="tdTotal" runat="server"></td> 
--------------- 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
    TableCell td = ((TableCell)this.FindControl("lvOrderSummary_tdTotal")); 
    } 
} 
+0

votre chargement de page est incomplète car il ne fait rien d'autre que trouver la cellule –

+0

@John - désolé, c'est juste un échantillon, la variable td renvoie null. – Fermin

Répondre

2

Vérifiez this article un exemple comment afficher un total dans la ListView.

Fondamentalement, vous pouvez ajouter une étiquette dans le modèle de mise en page:

<asp:ListView ID="lvOrderSummary" runat="server" 
    OnPreRender="lvOrderSummary_PreRender" ...> 

    <LayoutTemplate> 
    ... 
    <td><asp:Label ID="lblTotalCost" runat="server" Text="Total"/></td> 
    .. 
    </LayoutTemplate></asp:ListView> 

Et puis vous réglez le texte de l'étiquette dans le gestionnaire d'événements PreRender:

protected void lvOrderSummary_PreRender(object sender, EventArgs e) 
{ 
    Label lbl = lvOrderSummary.FindControl("lblTotalCost") as Label; 
    lbl.Text = GetTotalCost().ToString(); 
} 
0
Try 

     Dim strcon As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\webarticles\App_Data\mydatabase.mdf;Integrated Security=True;User Instance=True" 
     Dim con As New SqlConnection(strcon) 
     con.Open() 
     Dim da As SqlDataAdapter 
     Dim ds As New DataSet 
     Dim sqlstring As String = "SELECT * FROM tblstudent " 
     da = New SqlDataAdapter(sqlstring, con) 
     da.Fill(ds) 
     DetailsView1.DataSource = ds.Tables(0) 
     DetailsView1.DataBind() 

    Catch ex As Exception 
     MsgBox("There is some Error") 

    End Try 

Une autre donnée contrôle handeling est DétailsContrôle d'affichage qui vous permet d'afficher, de supprimer, d'éditer et d'insérer un seul enregistrement à la fois à partir de la source de données associée. Le contrôle DetailsView ne prend pas en charge le tri. Par défaut, le contrôle DetailsView affiche chaque champ d'un enregistrement sur sa propre ligne.

Questions connexes