2010-06-02 10 views
1

Je suis généralement un gars de PHP mais j'ai été bloqué en train de faire un projet sur vb.net.Définir la valeur de l'étiquette dans vb.net

J'ai une requête (sqldatasource) qui renvoie une seule valeur (la dernière date de mise à jour).

Je veux utiliser une étiquette pour dire quelque chose comme « Dernière mise à jour: » < Étiquette = (valeur retournée)>

En PHP ce serait simple. Dans vb.net, tout ce que je peux trouver sont des codes postérieurs mal écrits sans fin montrant comment exécuter la requête onLoad puis la lier à l'étiquette.

Est-ce vraiment le seul moyen de le faire? Il semble que ce soit un problème ridiculement simple d'avoir une solution si longue. J'ai utilisé un contrôle DataGrid pour lier directement le résultat de la requête, mais il imprime le nom de la colonne ainsi que la date, ce n'est donc pas idéal.

Des idées?

+0

Si tout ce que vous voulez afficher est la dernière mise à jour (champ unique), puis aucun point utilisant DataGrid. Utilisez juste un DataReader ADO.NET, beaucoup d'exemples autour. Voici un: http://msdn.microsoft.com/en-us/library/haa3afyz.aspx – RPM1984

Répondre

2

Dans votre méthode Page_Load, exécutez votre requête. Sur votre page.aspx, vous avez un contrôle de formulaire, appelons-le label1. Définissez label1.text = queryResult.

Sub Page_Load() 
    dim myConnection as new data.sqlclient.sqlconnection 
    dim myCommand as new data.sqlclient.sqlcommand 
    dim sqlReader as data.sqlclient.sqldatareader 
    myConnection.connectionString = 'enter your connection string details' 
    myConnection.Open() 
    myCommand = New SqlCommand("Select lastUpdated from yourTable", myConnection) 
    sqlReader = myCommand.ExecuteReader() 
    if sqlReader.hasRows then 
    sqlReader.read() 
    label1.text = Format("MM/dd/yyyy", sqlReader("lastUpdated")) 
    end if 
End Sub 

Et votre page.aspx (quelque part)

<asp:label id="Label1" runat="server" /> 

PS - je trompe peut-être la fonction de format ci-dessus, été pendant quelque temps.

EDIT basé sur Commentaire:

Eh bien, pour ce que vous faites, je ne recommanderais pas vraiment un SQLDataSource car il est vraiment destiné à être lié à un contrôle tel qu'un gridview ou répéteur. Toutefois, si vous voulez utiliser SQLDataSource, vous devrez vous lier à un DataView dans votre code-behind. De là, vous pouvez accéder à chaque ligne (vous ne devriez en avoir qu'un) et à la colonne par nom.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    Dim dv As New Data.DataView 
    'use the id of your SqlDataSource below' 
    dv = SqlDataSource1.Select(DataSourceSelectArguments.Empty) 
    Label1.Text = dv.Table.Rows(0)("LastUpdated") 
End Sub 

d'utiliser une chaîne de connexion du web.config:

web.config Fichier:

<appSettings> 
    <add key="strConnectionString" value="Data Source=192.168.0.55;Database=Times;User ID=sa;PassWord=sa"/> 
</appSettings> 

code Derrière:

 Dim sqlConn as new data.sqlClient.SqlConnection() 
    sqlConn.ConnectionString=ConfigurationManager.ConnectionStrings("strConnectionString").ConnectionString 
    sqlConn.Open() 
+0

merci Tommy-- pouvez-vous expliquer comment j'utiliserais une SqlDataSource avec cette approche? Ou, si cela n'est pas possible ou souhaitable, comment utiliser une chaîne de connexion prédéfinie avec ce code? – julio

+0

merci, j'apprécie vraiment que vous preniez le temps d'aider avec ceci. Je pense que je suis très proche, mais pour une raison quelconque, je ne reçois aucune donnée à imprimer.Je suis passé de la sqldatasource à un code derrière l'approche que vous avez recommandé, et pour tester j'ai ajouté une clause "else" au sqlReader.HasRows puis sqlReader.Read() Label.text = Format ("MM/jj/aaaa", sqlReader ("LastUpdate")) Else Label.text = "aucune donnée" End If cela semble comme si cela fonctionnerait - mais aucune valeur ne s'imprime.Toutes les idées? – julio

+0

got it, nécessaire pour ajouter "Handles Me.Load" à la fonction de chargement de la page. Merci pour votre aide! – julio