将ExecuteReader分配给Array

时间:2016-06-09 10:50:05

标签: asp.net sql-server

我正在尝试将PagedDataSource分配给ExecuteReader(),但我收到错误消息,说明需要ICollection

我想要它返回的所有数据,因为它将在转发器中分配。起初我刚刚将转发器分配给cmd.ExecuteReader()并且它工作正常,现在他们想要分页,我不知道如何改变查询以生成数组。

conn.Open();

var cmd = new SqlCommand("[safetyGuidanceSearch]", conn);
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.AddWithValue("@iwc", inwardCode);
cmd.Parameters.AddWithValue("@owc", outwardCode);

var objPds = new PagedDataSource();
objPds.DataSource = cmd.ExecuteReader();// turn into an array

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您需要先填充数组。

var result = new List<whatevertypespreturns>();
var reader = cmd.ExecuteReader();
while(reader.Read()){
    result.add(reader.GetXxxx(0);
}
objPds.DataSource = result.ToArray();

答案 1 :(得分:0)

你可以这样做

    SqlDataReader dr;
    DataTable dt = new DataTable();
    conn.Open();

    var cmd = new SqlCommand("[safetyGuidanceSearch]", conn);
    cmd.CommandType = CommandType.StoredProcedure;

    cmd.Parameters.AddWithValue("@iwc", inwardCode);
    cmd.Parameters.AddWithValue("@owc", outwardCode);

    var objPds = new PagedDataSource();
    dr = cmd.ExecuteReader();// turn into an array
    dt.load(dr);

现在您可以使用数据表执行您想要的操作,只需将其称为bellow

即可
    objPds.DataSource = dt;