emad_67
چهارشنبه 28 فروردین 1387, 21:29 عصر
سلام
من یه سری فیلد ها رو از دیتابیس میخونم و میخوام اونو را در gridview نشون بدم. میخوام در حالی که فیلد ها در حال bind شدن در gridview هستند مجددا فیلد های دیگه ای رو بخونم و در girdview قرار بدم( توسط connection فعلی)
حالا مشکلم اینه که وقتی میخوام اطلاعات رو در حین بایند شدن فیلد ها بخونم همش این ارور رو میده:
There is already an open DataReader associated with this Command which must be closed first
اطلاعات توسط متد ExecuteReader در یک data reader قرار داده میشه ولی من با اینکه در متد RowDataBind شیء جدیدی کلاس SqlCommand ساختم ولی بازم میگه که قبلا یه data reader به اون نسبت داده شده.
اینم کدی هست که نوشتم:
public partial class _Default : System.Web.UI.Page
{
SqlConnection conn;
protected void Page_Load(object sender, EventArgs e)
{
SqlCommand command = new SqlCommand();
SqlDataReader OrderReader;
conn = new SqlConnection();
conn.ConnectionString=ConfigurationManager.Connect ionStrings["NORTHWND"].ConnectionString;
command.Connection = conn;
command.CommandText =
"SELECT Top 50 Customers.CompanyName, Orders.OrderDate " +
"FROM Orders, Customers " +
"WHERE Orders.CustomerID=Customers.CustomerID ";
command.CommandType = CommandType.Text;
command.Connection.Open();
OrderReader = command.ExecuteReader();
GridView1.DataSource = OrderReader;
GridView1.DataBind();
conn.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
SqlCommand Comm = new SqlCommand();
SqlDataReader OrderDetailReader;
Comm.CommandText =
"SELECT Products.ProductName,[Order Details].UnitPrice " +
"FROM Products,[Order Details] " +
"WHERE [Order Details].ProductID=Products.ProductID";
Comm.CommandType = CommandType.Text;
Comm.Connection = conn;
OrderDetailReader = Comm.ExecuteReader();
}
}
مشکل اصلی در همون خطی هست که قرمز کردم.
خواهشا کمک کنید
ممنون
من یه سری فیلد ها رو از دیتابیس میخونم و میخوام اونو را در gridview نشون بدم. میخوام در حالی که فیلد ها در حال bind شدن در gridview هستند مجددا فیلد های دیگه ای رو بخونم و در girdview قرار بدم( توسط connection فعلی)
حالا مشکلم اینه که وقتی میخوام اطلاعات رو در حین بایند شدن فیلد ها بخونم همش این ارور رو میده:
There is already an open DataReader associated with this Command which must be closed first
اطلاعات توسط متد ExecuteReader در یک data reader قرار داده میشه ولی من با اینکه در متد RowDataBind شیء جدیدی کلاس SqlCommand ساختم ولی بازم میگه که قبلا یه data reader به اون نسبت داده شده.
اینم کدی هست که نوشتم:
public partial class _Default : System.Web.UI.Page
{
SqlConnection conn;
protected void Page_Load(object sender, EventArgs e)
{
SqlCommand command = new SqlCommand();
SqlDataReader OrderReader;
conn = new SqlConnection();
conn.ConnectionString=ConfigurationManager.Connect ionStrings["NORTHWND"].ConnectionString;
command.Connection = conn;
command.CommandText =
"SELECT Top 50 Customers.CompanyName, Orders.OrderDate " +
"FROM Orders, Customers " +
"WHERE Orders.CustomerID=Customers.CustomerID ";
command.CommandType = CommandType.Text;
command.Connection.Open();
OrderReader = command.ExecuteReader();
GridView1.DataSource = OrderReader;
GridView1.DataBind();
conn.Close();
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
SqlCommand Comm = new SqlCommand();
SqlDataReader OrderDetailReader;
Comm.CommandText =
"SELECT Products.ProductName,[Order Details].UnitPrice " +
"FROM Products,[Order Details] " +
"WHERE [Order Details].ProductID=Products.ProductID";
Comm.CommandType = CommandType.Text;
Comm.Connection = conn;
OrderDetailReader = Comm.ExecuteReader();
}
}
مشکل اصلی در همون خطی هست که قرمز کردم.
خواهشا کمک کنید
ممنون