2008-10-12 4 views
0

Je travaille sur un site Web ASP.NET où j'utilise un répéteur asp: avec la pagination effectuée via un fichier code-behind VB.NET. J'ai des problèmes avec la connexion à la base de données. Pour autant que je sache, la pagination fonctionne, mais je ne peux pas obtenir les données pour être certain.ASP.NET OleDbConnection Problème

La base de données est une base de données Microsoft Access. La fonction qui devrait être la base de données est en train d'accéder:

Dim pagedData As New PagedDataSource 

Sub Page_Load(ByVal obj As Object, ByVal e As EventArgs) 
    doPaging() 
End Sub 

Function getTheData() As DataTable 
    Dim DS As New DataSet() 
    Dim strConnect As New OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;Data Source=App_Data/ArtDatabase.mdb") 
    Dim objOleDBAdapter As New OleDbDataAdapter("SELECT ArtID, FileLocation, Title, UserName, ArtDate FROM Art ORDER BY Art.ArtDate DESC", strConnect) 
    objOleDBAdapter.Fill(DS, "Art") 

    Return DS.Tables("Art").Copy 
End Function 

Sub doPaging() 
    pagedData.DataSource = getTheData().DefaultView 
    pagedData.AllowPaging = True 
    pagedData.PageSize = 2 

    Try 
     pagedData.CurrentPageIndex = Int32.Parse(Request.QueryString("Page")).ToString() 
    Catch ex As Exception 
     pagedData.CurrentPageIndex = 0 
    End Try 

    btnPrev.Visible = (Not pagedData.IsFirstPage) 
    btnNext.Visible = (Not pagedData.IsLastPage) 

    pageNumber.Text = (pagedData.CurrentPageIndex + 1) & " of " & pagedData.PageCount 

    ArtRepeater.DataSource = pagedData 
    ArtRepeater.DataBind() 
End Sub 

ASP.NET est:

<asp:Repeater ID="ArtRepeater" runat="server"> 
    <HeaderTemplate> 
     <h2>Items in Selected Category:</h2> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <li> 
      <asp:HyperLink runat="server" ID="HyperLink" 
       NavigateUrl='<%# Eval("ArtID", "ArtPiece.aspx?ArtID={0}") %>'> 
       <img src="<%# Eval("FileLocation") %>" 
        alt="<%# DataBinder.Eval(Container.DataItem, "Title") %>t"/> <br /> 
       <%# DataBinder.Eval(Container.DataItem, "Title") %> 
      </asp:HyperLink> 
     </li> 
    </ItemTemplate> 
</asp:Repeater> 
+0

Bonjour, est-ce que vous obtenez une erreur ou que rien n'apparaît? Vous pouvez essayer de lier un datagrid avec autogenerate = true pour voir ce qui est renvoyé – alexmac

+0

Je n'ai pas d'erreur, rien n'apparaît. – Matt

+0

Si je donne au répéteur un DataSourceID = "AccessDataSource1", il tire bien les données, mais il ne supporte pas la pagination dont j'ai besoin. – Matt

Répondre

0

Problème résolu! À peu près, je me cognais la tête contre le mur, considérant à quel point c'était simple. C'était le Page_Load, je l'ai changé pour le suivant:

Protected Sub Page_Load1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    doPaging() 
End Sub 

Et voilà, ça marche!

En outre, pour la chaîne de connexion, je me suis retrouvé à l'aide:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = | DataDirectory | \ ArtDatabase.mdb

Ce qui fonctionne très bien.

Merci pour votre aide et vos commentaires!

0

créez-vous la chaîne de connexion à la main? Si oui ... ne faites pas ça! Utilisez l'Explorateur de serveur pour créer votre connexion. Puis mettez-le en surbrillance et allez dans la fenêtre Propriétés, et vous verrez la chaîne de connexion qu'il utilise. De plus, l'utilisation de l'Explorateur de serveurs vous permettra de parcourir vos tables et même de les ouvrir pour voir vos données. Au moins, cela vous dira si vos données sont accessibles.

+0

Je ne savais pas ça! Merci pour ça, ça ne résout pas vraiment mon problème. En utilisant la chaîne de connexion qu'il me donne, je n'ai toujours pas de données affichant – Matt