代码如下:
类文件:
    public OleDbDataReader Bindbyid(int id,DataList Mylist)
    {
        Connection.Open();
        string Sql = "select * from book where id=" + id;
        OleDbCommand Command = new OleDbCommand(Sql, Connection);
        OleDbDataReader Myreader = Command.ExecuteReader();
        Myreader.Read();
        return Myreader;
        Myreader.Close();
        Connection.Close();    }CS文件(mylist.aspx)
protected void Page_Load(object sender, EventArgs e)
    {
        Guestbookop operate = new Guestbookop();
        int id = Convert.ToInt32(Request.QueryString["id"]);
        OleDbDataReader Myreader=operate.Bindbyid(id);
           }
我现在要将读取出来内容分别绑定到相应的控件或页面中,该怎么办?

一、<head><title><...></title></head>
中间绑定读取来的title值?二、<asp:TextBox CssClass="fromtext" ID="tbusername" runat="server" Width="200px"></asp:TextBox>
将myreader值中的guestname值绑定到tbusername.text中,怎么办?三、如果上述上思路有错的话?该如何处理?(我是要做一个留言本的后台回复和编辑页面,先将用户留言和我的回复都读取到mylist.apsx页面中,编辑修改留言和回复的内容后再更新到数据库中)
 

解决方案 »

  1.   

    你的第一个方法就有错误,return Myreader后是不会执行 Myreader.Close()和Connection.Close()方法的,
    假如要返回DataReader的话应该这样写
    OleDbDataReader Myreader = Command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    return Myreader;我看你的第一个方法是直接传了一个DataList控件,可以在方法里边直接绑定呀
    MyList.DataSource = Myreader;
    MyList.DataBind();
    Myreader.Close();
    Connection.Close();
    就行了
      

  2.   

    一、.aspx文件中这样写<head><title><%=title></title></head>
        .cs文件后台中定义public title="页面标题";二、你这个<asp:TextBox CssClass="fromtext" ID="tbusername" runat="server" Width="200px"></asp:TextBox>控件是在DataList控件中吗
    如果是的话
    <asp:TextBox CssClass="fromtext" ID="tbusername" runat="server" Width="200px" Text='<%# DataBinder.Eval(Container.DataItem,"guestname")%>'></asp:TextBox>
      

  3.   

    Myreader.Read();
            return Myreader;
            Myreader.Close();
            Connection.Close();
    类文件代码是否有点问题。。你都return 了。后面的两个close不执行了吧。。你都把数据读到reader了。。用变量接收就OK了。
    public string strTitle = "";
    string strUserName = "";
    protected void Page_Load(object sender, EventArgs e)
        {
            Guestbookop operate = new Guestbookop();
            int id = Convert.ToInt32(Request.QueryString["id"]);
            OleDbDataReader Myreader=operate.Bindbyid(id);
            
            while(Myreader.read())
           {
               strTitle = Myreader["title"].ToString(); 
               strUserName = Myreader["userName"].ToString();
            }
            this.tbusername.Text = strUserName ;
         }
      

  4.   

    lengyubing_1983(玩得就是心跳) 说得没错 直接绑定就可以了
      

  5.   

    搞糊涂了!!上面代码确实有问题
    改为
     public OleDbDataReader Readadmin()
        {
            Connection.Open();
            string Sql = "select * from admin where id=1";(敢肯定这句代码肯定能读出数据)
            OleDbCommand Command = new OleDbCommand(Sql, Connection);
            OleDbDataReader myReader = Command.ExecuteReader();
            myReader.Read();
            Connection.Close();
            return myReader;
      }
    这样myreader会不会返回数据集?CS文件(mylist.aspx.cs)
     Guestbookop operate = new Guestbookop();
     protected void Page_Load(object sender, EventArgs e)
        {
            OleDbDataReader myreader = operate.Readadmin();
            string title = myreader["sitename"].ToString();        
        }
    在mylist.aspx中
    <%= title %>
    现在错误提示如下:
    Server Error in '/' Application.
    --------------------------------------------------------------------------------No data exists for the row/column. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: No data exists for the row/column.Source Error: 
    Line 18:     {
    Line 19:         OleDbDataReader myreader = operate.Readadmin();
    Line 20:         string title = myreader["sitename"].ToString();(红色) 在行或列中不存在数据?为什么读不出来?该怎么改呀?