代码如下
    sub  page_load(s as object ,e as eventargs)
        Dim conn as oledbconnection
        Dim strselect As String
        Dim strselect1 As String
        Dim ascmd As OleDbCommand
        Dim ascmd1 As OleDbCommand
        Dim asreader As OleDbDataReader
        Dim asreader1 As OleDbDataReader
        Dim dbname As String
        dbname=server.mappath("someelse/info.mdb")
        conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source="+dbname)
        strselect = "select top 7 * from info order by id desc"
        strselect1 = "select top 8 * from pic order by id desc"
        ascmd = New OleDbCommand(strselect, conn)
        ascmd1 = New OleDbCommand(strselect1, conn)
        conn.Open()
        asreader = ascmd.ExecuteReader()
        asreader1 = ascmd1.ExecuteReader()
        txt.DataSource = asreader
        txt.DataBind()
        txt2.DataSource = asreader1
        txt2.DataBind()
        asreader.Close()
asreader1.Close()
        conn.Close()    
    end sub 在本地打开的时候是显示正常,但是上传到服务器就报错了,提示要关闭repeater

解决方案 »

  1.   

    sub  page_load(s as object ,e as eventargs) 
            Dim conn as oledbconnection 
            Dim strselect As String 
            Dim strselect1 As String 
            Dim ascmd As OleDbCommand 
            Dim ascmd1 As OleDbCommand 
            Dim asreader As OleDbDataReader 
            Dim asreader1 As OleDbDataReader 
            Dim dbname As String 
            dbname=server.mappath("someelse/info.mdb") 
            conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source="+dbname) 
            strselect = "select top 7 * from info order by id desc" 
            strselect1 = "select top 8 * from pic order by id desc" 
            ascmd = New OleDbCommand(strselect, conn) 
            ascmd1 = New OleDbCommand(strselect1, conn) 
            conn.Open() 
            asreader = ascmd.ExecuteReader() 
            asreader1 = ascmd1.ExecuteReader() 
            txt.DataSource = asreader 
            txt.DataBind() 
    asreader.Close()
            txt2.DataSource = asreader1 
            txt2.DataBind() 
             
    asreader1.Close() 
            conn.Close()     
        end sub 不建议使用datareader作为数据源来绑定
      

  2.   

    datareader是基于连接的数据窗口,必须关闭一个后,另一个才能使用(对同一连接)
    所以建议用datatable
     或者:
    关闭一个先
    asreader = ascmd.ExecuteReader()  
                   txt.DataSource = asreader  txt.DataBind()  
    asreader.Close()  //这是必须的.
     asreader1 = ascmd1.ExecuteReader()  
     txt2.DataSource = asreader1  
            txt2.DataBind()  
      

  3.   

    第二个reapter不能显示
    我调用的第一个代码      <ul id="ulstyle">
              <asp:repeater id="txt" runat="server">
              <itemtemplate>
              <li><span><%# container.dataitem("subtime") %></span><a href='news/shownews.aspx?sid=<%# container.dataitem("id") %>'><%# container.dataitem("newtitle") %></a> </li>
              </itemtemplate>
              </asp:repeater>
           </ul>我调用第二个代码       <ul>
              <asp:repeater id="txt2" runat="server">
              <itemtemplate>
              <li><a target="_blank" href='news/showpic.aspx?proname=<%# container.dataitem("id")%>'><img src='img/<%# container.dataitem("prourl") %>' /><span><%#Container.DataItem("proname")%></span></a></li>
              </itemtemplate>
              </asp:repeater>
           </ul>
    是不是上面不能这样调用啊,
      

  4.   

    用DataTable来绑定吧。
    [code=vb#]
    sub  page_load(s as object ,e as eventargs) 
            Dim conn as oledbconnection 
            Dim strselect As String 
            Dim strselect1 As String 
            Dim ascmd As OleDbCommand 
            Dim ascmd1 As OleDbCommand 
            Dim asreader As OleDbDataReader 
            Dim asreader1 As OleDbDataReader 
            Dim dbname As String 
            dbname=server.mappath("someelse/info.mdb") 
            conn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source="+dbname) 
            strselect = "select top 7 * from info order by id desc" 
            strselect1 = "select top 8 * from pic order by id desc" 
            ascmd = New OleDbCommand(strselect, conn) 
            ascmd1 = New OleDbCommand(strselect1, conn) 
            conn.Open() 
           '绑定第一个数据源,完成绑定后关闭
            asreader = ascmd.ExecuteReader()  
            txt.DataSource = asreader 
            txt.DataBind() 
            asreader.Close() 
            '绑定第二个数据源,完成绑定后关闭
            asreader1 = ascmd1.ExecuteReader()
            txt2.DataSource = asreader1 
            txt2.DataBind() 
            asreader1.Close() 
            conn.Close()     
        end sub [/code]
      

  5.   

    建议用datatable做数据源!在pageload里的ISPOSTBACK=FALSE
      

  6.   

    在pageload里绑定后,用面对面缓存,这样就不用每次查询数据库了
      

  7.   

    datatable谁能帮忙写一下么,我repeater已经搞了很久都没有成功,以前都没有用过datatable,