2010-09-17 8 views
1

Je suis relativité nouvelle à la programmation asp.net, donc celui-ci m'a perplexe. J'ai créé manuellement un ensemble de données et défini sa valeur sur la source de données du contrôle GridView, puis appelez la méthode Databind, mais elle n'est pas actualisée. J'ai recréé une version simple de ce que je fais pour que quelqu'un puisse me dire ce que je fais de mal. Je n'ai pas inclus le fichier principal, car je ne le voyais pas comme pertinent.ASP.Net GridView ne rafraîchit pas

Code pour la page ASP

<%@ Page Language="vb" MasterPageFile="~/MasterPage.master" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="TestGridView._Default" %> 

prix de mise à jour s'il vous plaît VEILLE.



<p> 
    <asp:GridView ID="GV1" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="VendorNumber" HeaderText="Vendor" /> 
     <asp:BoundField DataField="PartNumber" HeaderText="Part or Sku" /> 
     <asp:BoundField DataField="Message" HeaderText="Error Message" /> 
    </Columns> 
    </asp:GridView> 
</p> 
<br /> 
<br /> 
<% 
    If Not Page.IsPostBack Then 
     Response.Write(Me.UpdatePricing()) 

    End If 
%>  

code pour le code Derrière

Public Class _Default 
Inherits System.Web.UI.Page 

Public Function UpdatePricing() As String 
    Dim showerrors As Boolean = False 

    Dim Head As New PnAHead() 

    Dim ds As DataSet = Head.GetErrorDataset() 

    If (ds.Tables("Errors").Rows.Count > 0) Then 
     showerrors = True 
    End If 

    If showerrors Then 
     GV1.DataSource = ds 
     GV1.DataBind() 
    End If 

    Return "Sales Line Number has been updated." 
End Function 

End Class

classe qui cre Ates le DataSet

Public Class PnAHead 

Public Function GetErrorDataset() As DataSet 
    Dim dstemp = New DataSet() 
    Dim tbl As DataTable = dstemp.Tables.Add("Errors") 
    Dim col As DataColumn = tbl.Columns.Add("VendorNumber", System.Type.GetType("System.String")) 
    col.MaxLength = 20 

    col = tbl.Columns.Add("PartNumber", System.Type.GetType("System.String")) 
    col.MaxLength = 50 

    col = tbl.Columns.Add("Message", System.Type.GetType("System.String")) 
    col.MaxLength = 500 

    Dim row As DataRow 

    row = tbl.NewRow() 

    row("VendorNumber") = "Vendor 1" 
    row("PartNumber") = "Part Number 1" 
    row("Message") = "Message for Part 1" 

    tbl.Rows.Add(row) 

    row = tbl.NewRow() 

    row("VendorNumber") = "Vendor 2" 
    row("PartNumber") = "Part Number 2" 
    row("Message") = "Message for Part 2" 

    tbl.Rows.Add(row) 

    Return dstemp 
End Function 

End Class

Répondre

2

Vous devez ajouter votre appel pour mettre à jour les prix dans l'événement Page_Load. Vous pouvez également supprimer le Response.Write().

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     Me.UpdatePricing() 
    End If 
End Sub 

Vous pouvez le faire dans la page .aspx en enveloppant l'événement Page_Load dans les balises de script, comme ceci:

<script type="text/VB" runat="server"> 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not Page.IsPostBack Then 
     Me.UpdatePricing() 
    End If 
End Sub 

</script> 

Ou vous pouvez simplement ajouter l'événement Page_Load à votre code derrière, que je pense est préférable car vous avez déjà un code derrière la page.

+0

Merci, c'était la solution. Je viens du monde de la programmation Windows et je pouvais mettre à jour un datagridview à tout moment et ça fonctionnait toujours. Savez-vous pourquoi vous devez l'appeler à partir de l'événement Page_Load pour le faire fonctionner? – Kevin

0

Pourquoi ne pas déboguer votre code et la vérification de l'ensemble de données a ou non, u peut le faire en ajoutant un point d'arrêt sur la ligne où vous définissez la source de données, vous pouvez entrer dans les propriétés de l'ensemble de données .. et vous trouverez une icône de loupe .. cliquez dessus ,, une fenêtre s'ouvrira montrant l'ensemble des données récupérées.

+0

J'avais déjà vérifié que les données étaient dans l'ensemble de données dans le cadre de mon dépannage. Je ne comprenais pas pourquoi ça n'était pas rafraîchissant. – Kevin

Questions connexes