在datagridview中显示数据库中的单行

时间:2013-03-08 18:58:44

标签: c# sql

我想只显示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();

2 个答案:

答案 0 :(得分:1)

您无法将数据源设置为一个属性。您可以做的是在gridview中定义一个绑定到第一个名称列的列,然后将te Grid的Datasource设置为返回的整个对象集合。

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

更新

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

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

答案 1 :(得分:0)

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

正如Icarus所说 - 你可以直接绑定数据,而不是像你想要的那样逐行检查。但如果你想逐行,你可以

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

此外 - 您不需要增加像您正在使用的while循环中的datareader。