2009-06-22 5 views
2

Ich habe eine Funktion, die normalerweise beim Schleifen innerhalb eines SqlDataReader aufgerufen wird, die Daten von diesem SqlDataReader nimmt und einige Sachen damit macht.Wie kann ich eine Funktion erstellen, die einen SQLDataReader und einen DBDataRecord als Parameter akzeptiert?

Nun, ich brauche der Lage sein, auch sie rufen aus dem Inneren eines Data Bound Repeater-Objekt, das sich auch auf ein SqlDataReader gebunden ist ...

In der Kontrolldatabound, in der „OnDataBinding“ Ereignis, ich normalerweise tun dies, wenn sie an einen Datensatz Bindung:

RepeaterItem Binder = (RepeaterItem) Me.NamingContainer; 
DataRowView rowResult = (DataRowView) Binder.DataItem; 

Nun, da ich zu einem Datareader bin verbindlich, habe ich versucht:

SqlDataReader rowResult = (SqlDataReader) Binder.DataItem; 

Und es funktioniert nicht, weil offenbar die DataItem ist DataRecordInternal vom Typ

Ich konnte es zu einem „DbDataRecord“ werfen, und ich kann seine Werte zugreifen, aber ich kann natürlich nicht als Parameter an die Funktion übergeben, die einen SqlDataReader erwartet ...

Ich kann auch keine Basisklasse oder Schnittstelle finden, die beide gemeinsam haben, für den Parameter ...

Was mich am meisten verwirrend ist hier, wie, durch die Datenbindung, der SqlDataReader wird "in "ein DbDataRecord. Wenn ich das innerhalb meiner Funktion tun könnte, könnte ich 2 Überladungen haben: Eine, die ein DbDataRecord nimmt und ihren Job erledigt, und eine, die einen SqlDataReader nimmt, "konvertiert es" in ein DbDataRecord und ruft die erste Überladung auf.

Irgendwelche Ideen?
Danke!

Antwort

4

Vielleicht IDataRecord?

+0

Ja! Vielen Dank!!! –

Verwandte Themen