首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 如何在同一个页面中绑定两个repeater [已结贴,结贴人:pheakin]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 16:16:21 楼主
    代码如下
        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
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 16:43:251楼 得分:40
    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作为数据源来绑定
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 16:47:572楼 得分:0
    datareader是基于连接的数据窗口,必须关闭一个后,另一个才能使用(对同一连接)
    所以建议用datatable
    或者:
    关闭一个先
    asreader = ascmd.ExecuteReader() 
                  txt.DataSource = asreader 

    txt.DataBind() 
    asreader.Close()  //这是必须的.
    asreader1 = ascmd1.ExecuteReader() 
    txt2.DataSource = asreader1 
            txt2.DataBind() 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 16:55:273楼 得分:0
    第二个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>
    是不是上面不能这样调用啊,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 17:02:444楼 得分:10
    用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]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syc958
    • 等级:
    发表于:2008-05-08 17:05:525楼 得分:0
    建议用datatable做数据源!在pageload里的ISPOSTBACK=FALSE
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syc958
    • 等级:
    发表于:2008-05-08 17:07:186楼 得分:0
    在pageload里绑定后,用面对面缓存,这样就不用每次查询数据库了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-08 17:08:477楼 得分:0
    datatable谁能帮忙写一下么,我repeater已经搞了很久都没有成功,以前都没有用过datatable,
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved