2008-10-12 4 views
0

VB.NET 코드 숨김 파일을 통해 수행 된 페이징과 함께 asp : repeater를 사용하는 ASP.NET 웹 사이트에서 작업하고 있습니다. 그래도 데이터베이스 연결에 문제가 있습니다. 내가 알 수있는 한, 페이징은 작동하지만 데이터를 확실하게 알 수는 없습니다.ASP.NET OleDbConnection 문제

데이터베이스는 Microsoft Access 데이터베이스입니다. 데이터베이스에 액세스해야이 기능은 다음과 같습니다

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은 다음과 같습니다

<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

안녕하세요. 오류가 발생하거나 아무것도 표시되지 않습니까? autogenerate = true를 사용하여 DataGrid에 바인딩하여 시도 할 수 있습니다. – alexmac

+0

오류가 발생하지 않으며 아무 것도 표시되지 않습니다. – Matt

+0

중계기에 DataSourceID = "AccessDataSource1"을 지정하면 데이터를 잘 가져 오지만 필요한 페이징을 지원하지 않습니다. – Matt

답변

0

문제가 해결되었습니다. 벽에 머리를 대고 꽤 간단하게 생각했습니다. Page_Load 였으므로 다음과 같이 변경했습니다.

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

그리고 작동합니다.

또한, 연결 문자열을, 내가 사용 결국 :

제공 = Microsoft.Jet.OLEDB.4.0를; 데이터 소스 = | DataDirectory를 | \ ArtDatabase.mdb

좋은 작품

.

도움과 의견을 보내 주셔서 감사합니다.

0

당신은 손으로 연결 문자열을 생성하고 있습니까? 그렇다면 ...하지 마! 서버 탐색기를 사용하여 연결을 작성하십시오. 그런 다음 강조 표시하고 속성 창으로 이동하면 사용하는 연결 문자열이 표시됩니다.

또한 서버 탐색기를 사용하면 테이블을 찾아보고 심지어 데이터를 볼 수 있습니다. 적어도 데이터에 액세스 할 수 있는지 여부를 알려줄 것입니다.

+0

나는 그것을 몰랐다! 고마워, 정말 내 문제를 해결하지 않습니다. 연결 문자열을 사용하면 여전히 데이터를 표시 할 필요가 없습니다. – Matt