У меня есть хранимая процедура в SQL Server, которая возвращает семь наборов результатов. Я хотел бы вызвать эту хранимую процедуру из ASP.NET и заполнить семь GridViews на моей странице ASP.NET с результатами. Я использую SqlDataReader для получения данных, однако я боюсь с кодом C#, чтобы заполнить GridViews.Как заполнить многие элементы управления GridView из одной хранимой процедуры?
Я создал класс DAL, чтобы получить данные и у меня есть этот метод там:
public SqlDataReader CheckDataIntegrity()
{
SqlCommand cmd = new SqlCommand("cc.DataCheck");
return MultipleResults(cmd);
}
Метод MultipleResults хелперы выглядит следующим образом:
private SqlDataReader MultipleResults(SqlCommand cmd)
{
SqlConnection con = new SqlConnection(_connectionString);
cmd.Connection = con;
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
con.Close();
return dr;
}
Я пытаюсь позвонить компонент на моей странице с чем-то вроде:
private void FillGridViews()
{
DBUtil DB = new DBUtil();
using (SqlDataReader dr = DB.CheckDataIntegrity())
{
if (dr.HasRows)
{
while (dr.Read())
{
GridView1.DataSource = dr;
GridView1.DataBind();
}
}
}
}
Я искал в Интернете пример это, но ничего не могло найти.
Знаете ли вы о ресурсе или имеете небольшой пример для обмена?
Спасибо.
В методе multipleResults вы должны окружить свой SqlConnection оператором using. – Lareau
@ Laraeu - это не имело никакого значения, я все равно получаю 'Неверная попытка вызвать HasRows, когда читатель закрыт. ' –
Я видел проблемы, которые у вас были в комментариях к ответу. Я бы подумал об изменении параметров MultipleResults, чтобы принять sqlconnection таким образом, чтобы вы могли эффективно управлять открытием и закрытием. – Lareau