powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование функции в DataGrid (e)
3 сообщений из 3, страница 1 из 1
Использование функции в DataGrid (e)
    #33017794
Толян
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При использование своей функции внутри DataGrid (e)
<ItemTemplate>
<%# FillMsg_c(DataBinder.Eval Container, "DataItem.kodMsg").ToString())</ItemTemplate>
возникает ошибка:
There is already an open DataReader associated with this Connection which must be closed first.

сам DataGrid я заполняю так:

string nameProcedura="InfoMsg";
SqlCommand sqlCmd=new SqlCommand(nameProcedura,sqlConn);
sqlCmd.CommandType=CommandType.StoredProcedure;
DataGrid.DataSource =sqlCmd.ExecuteReader();
DataGrid.DataKeyField="kodMsg";
DataGrid.DataBind();

// тело функции FillMsg_c
public string FillMsg_c(string kod)
{
string strVal=null;
string nameProcedura="InfoMsg_c";
SqlCommand sqlCmd=new SqlCommand(nameProcedura,sqlConn);
sqlCmd.CommandType=CommandType.StoredProcedure;
sqlCmd.Parameters.Add(new SqlParameter("@kodMsg", SqlDbType.Int));
sqlCmd.Parameters["@kodMsg"].Value=Convert.ToInt32(kod);
if(sqlConn.State!=ConnectionState.Open)sqlConn.Open();

SqlDataReader reader1=sqlCmd.ExecuteReader();
while (reader1.Read())
{
strVal=strVal+reader1["Commentor"].ToString();
}
reader1.Close();
return strVal;
}
Что делать???
...
Рейтинг: 0 / 0
Использование функции в DataGrid (e)
    #33017852
gerss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В теле функции FillMsg_c создать новый SqlConnection.

Сейчас у тебя получается попытка использовать 2 одновременно открытых Reader-а (один для заполнения грида, второй - в теле функции) на один SqlConnection, а это недопустимо.

То есть, функция будет выглядеть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public string FillMsg_c(string kod)
{ 
  string strVal=null;
  string nameProcedura="InfoMsg_c";
  SqlConnection conn = new SqlConnection(...);// Connection string можно использовать от уже открытого
  SqlCommand sqlCmd=new SqlCommand(nameProcedura,conn); 
  ...
  conn.Open();
  SqlDataReader reader1=sqlCmd.ExecuteReader();
  while (reader1.Read())
  {
    strVal=strVal+reader1["Commentor"].ToString(); 
  }
  reader1.Close(); 
  conn.Close();
  return strVal;
}
Сергей
...
Рейтинг: 0 / 0
Использование функции в DataGrid (e)
    #33019101
хм...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
золотое правило от микрософта: открыл коннект, сделал то что требуется с базой, и сразуже закрыл
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Использование функции в DataGrid (e)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]