DropDownList2.DataSource = dr;
DropDownList2.DataTextField = "NAME";
DropDownList2.DataValueField = "TRANSITION_ID";
DropDownList2.DataBind();
如果只有上面这一部分的话,就是正确的。如加了下面的代码的话,就会出错。
                                     DropDownList3.DataSource = dr;
DropDownList3.DataTextField = "NAME";
DropDownList3.DataValueField = "TRANSITION_ID";
DropDownList3.DataBind();
请问这是什么原因,怎么解决呢?万分谢谢!

解决方案 »

  1.   

    别用reader,因为它是单向的,到头了就回不去了,用DataTable/DataView
      

  2.   

    哦,就是因为这个原因哦!可是我是想将控件绑定到SQL查询得到的结果上,用DataTable怎么实现呢?谢谢
      

  3.   

    思归的是正解!
    推荐用DATAVIEW!!!
      

  4.   

    请两位高手具体介绍一下,Sql查询结果怎么转化成DataView哦?
      

  5.   

    同意上面的解释获取datatable的代码如下:string sql="select * from table_name where ....";
    SqlDataAdapter da=new SqlDataAdapter(sql,conn);
    DataSet ds=new DataSet();
    da.fill(ds);
    DataTable dt=ds.Tables[0];
    如果要用到DataView,可以看下面的代码
    DataView dv=ds.Tables[0].DefaultView.编程快乐,请访问www.zhihuigu.com,程序员俱乐部网站,讨论技术和学习感受!
      

  6.   

    给你一段源代码!!!
        Function getScore(ByVal SQL As String, ByVal dbName As String) As ICollection
            Dim pData As New DataSet()
            Dim pad As New SqlClient.SqlDataAdapter(SQL, pconn)
            pad.Fill(pData, dbName)'先得到DATASET
            Return pData.Tables(dbName).DefaultView'注意这里
        End Function
      

  7.   

    忘了一点!
    你可以直接用上面的函数得到DATAVIEW
      

  8.   

    DataReader它是单向的,所以你绑定了第一个控后,它已经读到头了,第二个控件自己没有数据可以读了.
    解决方法,不用DataReader用DataTable或DataView 进行绑定同一数据源.