2016-06-09 2 views
0

Ich versuche eine PagedDataSource zu ExecuteReader() zuweisen, aber ich bekomme den Fehler, es muss ICollection sein.Assay ExecuteReader dem Array zuweisen

Ich möchte alle Daten, die es zurückgibt, wie es in einem Repeater zugewiesen werden soll. Zuerst habe ich den Repeater nur der cmd.ExecuteReader() zugewiesen und es funktionierte ok, jetzt wollen sie paging und ich bin mir nicht sicher, wie man die Abfrage ändert, um ein Array zu erzeugen.

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 

Was soll ich versuchen?

Antwort

1

Sie müssen zuerst das Array füllen.

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

Sie können

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); 

jetzt so etwas tun können Sie tun, was Sie mit Ihrem Datatable wollen es nur nennen wie unten

objPds.DataSource = dt; 
Verwandte Themen