複数のレコードセットを返すストアド プロシージャがあります。1 つのレコードセット、2 つのレコードセット、またはそれ以上にすることができます。RSが何人戻ってくるかわかりません。
ここstackoverflowで、以下のサンプルを見つけました
Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("myConnection").ConnectionString)
Dim cmd As New SqlCommand
Dim Reader As SqlDataReader
cmd.Connection = conn
cmd.Parameters.AddWithValue("@ACTNbr", tbACTNbr.Text.ToString.Trim)
cmd.Parameters.AddWithValue("@WTHNbr", tbWTHNbr.Text.ToString.Trim)
cmd.CommandText = "sp_search_def"
cmd.CommandType = CommandType.StoredProcedure
conn.Open()
Reader = cmd.ExecuteReader()
'The next part is what I found here at stackoverflow
While Reader.Read() OrElse (Reader.NextResult() And Reader.Read())
For i As Integer = 0 To Reader.FieldCount - 1
Response.Write(Reader(i).ToString())
Response.Write(" ")
Next
Response.Write("<br />")
End While
上記response.write
は、私が完全に必要とするデータを示しています。しかし、それをGridviewに入れる必要があります。つまり、ストアド プロシージャの結果 (およびそのすべての結果セット) を 1 つのグリッドビューに配置する必要があります。
私のグリッドビューはに設定されていAutoGenerateColumns = "true"
ます。
私はもう試した:
myGridview.DataSource = Reader
myGridview.DataBind()
もちろん、レコードセットは 1 つしか取得できません。
ストアド プロシージャの結果はすべて同じ形式 (同じ数の列、ヘッダーなど) にフォーマットされます。
誰かが私を正しい方向に向けることができますか? 私はこれを理解しようとしてきましたが、あきらめて、今ここで尋ねています。
私はこれが初めてです。
ありがとうございました。