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