2016-06-09 2 views
0

PagedDataSourceExecuteReader()에 할당하려고 시도했지만 오류가 ICollection이어야합니다.ExecuteReader를 배열에 할당

리피터에서 할당되기 때문에 반환하는 모든 데이터를 원합니다. 처음에는 그냥 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 

무엇을해야합니까?

답변

1

먼저 배열을 채워야합니다.

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

뭔가를 할 수있는 데이터 테이블 단지 울부 짖는 소리

objPds.DataSource = dt; 
과 같이 호출