SqlDataReader 内でループしているときに通常呼び出される関数があり、その SqlDataReader からデータを取得し、それを処理します。
ここで、SqlDataReader にもバインドされている Data Bound Repeater オブジェクト内からも呼び出すことができるようにする必要があります...
DataBound コントロールでは、「OnDataBinding」イベントで、DataSet にバインドするときに通常これを行います。
RepeaterItem Binder = (RepeaterItem) Me.NamingContainer;
DataRowView rowResult = (DataRowView) Binder.DataItem;
今、私は DataReader にバインドしているので、試しました:
SqlDataReader rowResult = (SqlDataReader) Binder.DataItem;
どうやら DataItem は DataRecordInternal 型であるため、機能しません
私はそれを「DbDataRecord」にキャストでき、その値にアクセスできましたが、SqlDataReaderを期待する関数にパラメーターとして渡すことは明らかにできません...
また、パラメーターに使用するために、両方に共通する基本クラスまたはインターフェイスが見つかりません...
ここで最も困惑しているのは、データ バインディングによって SqlDataReader が DbDataRecord に「変換」される方法です。関数内でこれを行うことができれば、2 つのオーバーロードを持つことができます。1 つは DbDataRecord を受け取り、その仕事を行い、もう 1 つは SqlDataReader を受け取り、DbDataRecord に「変換」して最初のオーバーロードを呼び出します。
何か案は?
ありがとう!