我有一个来自SQL Server命令的SqlDataReader
,并希望我使用此代码在DataDridView
中显示:
SqlDataReader dr=product.RetriveDetailsOfOneProduct();
DataTable dt = new DataTable();
dt.Load(dr);
DataGrid.DataSource = dr;
我使用我的SqlDataReader
有行的断点检查了它,但是当它加载到DataTable
时,它是空的(没有行)
我该如何解决这个问题?
它是我的DataAccess类的函数,其中返回SqlDataReader
:
internal SqlDataReader RetriveDetailsOfOneProduct(product product)
{
string RetriveQuery = string.Format("SElect person.F_Name as N'Name ',person.L_Name as N'LastName',borrow.Person_Identity as N'Identity',borrow.T_Date as 'Date1', borrow.B_Date as 'Date2' from BorrowTable borrow Inner join PersonTable person on borrow.Product_Name=N'{0}' and person.Person_identity=borrow.Person_Identity ", product.Productname);
SqlCommand cmd = new SqlCommand(RetriveQuery, conn);
// conn.Close(); //if i close the Connection(conn) it runs into error
return(cmd.ExecuteReader());
}
答案 0 :(得分:3)
您的问题是您要将数据源设置为数据读取器而不是数据表。
DataGrid.DataSource = dr;
应该是
DataGrid.DataSource = dt;
DataGrid.DataBind();
答案 1 :(得分:2)
分配数据表,而不是datareader ......
DataGrid.DataSource = dt;