0

我只想显示datagridview. 这是我的查询,但它没有返回任何内容:

sc.Open();
cmd.CommandText = "select * from myEmployees where JobRole ='Waiter'";
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
   while (dr.Read())
   {                            
        dgNames.DataSource = dr["firstName"];
        count++                      
   }         
}            
sc.Close();
4

2 回答 2

1

您不能将 Datasource 设置为仅一个属性。您可以做的是在您的 gridview 中定义一个绑定到名字列的列,然后将 Grid 的 Datasource 设置为返回的整个对象集合。

其次,您可以简单地将 Datareader 绑定到网格,根本不需要执行 while 循环。

更新

dgNames.AutogenerateColumns=false;
dgNames.Columns.Add("firstName","firstName");
dgNames.DataSource=dr;

如果您想知道返回了多少条记录,只需在绑定后计算网格中的行数......或者使用Datareader加载数据表,并将Dataable绑定到网格而不是绑定Datareader。DataTables.Rows.Count 将告诉您返回了多少条记录。

于 2013-03-08T19:02:37.863 回答
0

这直接来自 MSDN(谷歌'datagridview',它就在顶部)。滚动到底部,并且有示例代码演示了如何执行您所要求的操作。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.aspx

正如 Icarus 所说——您可以只绑定数据,而无需像您尝试做的那样逐行检查它。但是,如果您确实想逐行进行,则可以

...
dgNames.Rows.Add(dr["firstName"]);
...

此外 - 您不需要像您正在使用的那样增加处于 while 循环中的数据读取器。

于 2013-03-08T19:12:36.990 回答