多谢!!!!

解决方案 »

  1.   

    对于DataGrid控件而言,一般绑定前使用DataAdapter来进行“填充”DataGrid,网上有很多种这样的方法,你可以查阅
      

  2.   

    我说的是用DataReader绑定,性能考虑!填充我当然会。
      

  3.   

    我觉得DataReader的值转到DataTable里边返回绑定到DataGrid比较好
      

  4.   

    那可以这样实现,以下面代码为例:
    Sub BindData()
        ’1. Create a connection
        Dim myConnection as New SqlConnection(
              ConfigurationSettings.AppSettings(“connectionString“))    ’2. Create the command object, passing in the SQL string
        Const strSQL as String = “sp_Popularity“
        Dim myCommand as New SqlCommand(strSQL, myConnection)    ’Set the datagrid’s datasource to the datareader and databind
        myConnection.Open()
        DataGrid1.DataSource = myCommand.ExecuteReader(
                                  CommandBehavior.CloseConnection)
        DataGrid1.DataBind()以上是VB.NET实现,希望对你有所帮助
      

  5.   

    lengyubing_1983(冷于冰) 传到DataTable里面,还不是相当于全部存在内存中了?性能可能与数据集方案别无二致吧?
    请指教!
      

  6.   

    roaring_sea(程序小生)
    代码我看完了(其实我是用C#的,呵呵),这样看起来是在后台.ASPX.CS文件中写的,我是想做分层开发,也就是有一个数据访问类,把所有数据访问方面的逻辑封装起来,只是公开一个方法提供表示层ASPX文件的数据源不知我说清楚了没
      

  7.   

    哦,原来是这样,其实我也是用C#的,VB.NET以前也用过,简单的可以!祝你早日解决问题!
      

  8.   

    我在数据类里面这样写:
    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    cmd.CommandText = query; conn.Open();
    System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
    //我想在此处返回dr,但明显是不可以的。因为下面有两个东东要关闭。
    dr.Close();
    conn.Close();
    //我如果在此处返回dr,但连接已关闭,dr传过去也不会有完整的数据了吧?如何才能传回表示层窗体类呢?
      

  9.   

    datagrid1.datasource = a.backdatareader(参数);
    datagrid1.databind();
      

  10.   

    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    cmd.CommandText = query; conn.Open();
    System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();//我想在此处返回dr,但明显是不可以的。因为下面有两个东东要关闭。你在这里把dr赋给一个session就可以了。 dr.Close();
    conn.Close();
      

  11.   

    直接返回DataReader
    然后绑定到DataGrid
      

  12.   

    private static SqlDataReader ExecuteReader(SqlConnection connection, SqlTransaction transaction, CommandType commandType, string commandText, SqlParameter[] commandParameters, SqlConnectionOwnership connectionOwnership)
            {
    if( connection == null ) throw new ArgumentNullException( "connection" ); bool mustCloseConnection = false;
                // 创建命令
                SqlCommand cmd = new SqlCommand();
    try
    {
    PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection );

    // 创建数据阅读器
    SqlDataReader dataReader; if (connectionOwnership == SqlConnectionOwnership.External)
    {
    dataReader = cmd.ExecuteReader();
    }
    else
    {
    dataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    }

    // 清除参数,以便再次使用..
    // HACK: There is a problem here, the output parameter values are fletched 
    // when the reader is closed, so if the parameters are detached from the command
    // then the SqlReader can磘 set its values. 
    // When this happen, the parameters can磘 be used again in other command.
    bool canClear = true;
    foreach(SqlParameter commandParameter in cmd.Parameters)
    {
    if (commandParameter.Direction != ParameterDirection.Input)
    canClear = false;
    }
                
    if (canClear)
    {
    cmd.Parameters.Clear();
    } return dataReader;
    }
    catch
    {
    if( mustCloseConnection )
    connection.Close();
    throw;
    }
            }
      

  13.   

    DATAREADER读取数据到ILIST里面,然后表示层就可以读取该ILIST了。
    datagrid1.datasource = Your ILIST;
    datagrid1.databind();
      

  14.   

    直接引用该类,然后实例话填充参数就可以了!dr单独写成函数,然后最后在写个dr.Close()函数即可!