Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果我直接将数据集分配给BindingSource,为什么在gridview工作时使用BindingSource?_C#_Sql_Database_Ado.net - Fatal编程技术网

C# 如果我直接将数据集分配给BindingSource,为什么在gridview工作时使用BindingSource?

C# 如果我直接将数据集分配给BindingSource,为什么在gridview工作时使用BindingSource?,c#,sql,database,ado.net,C#,Sql,Database,Ado.net,我在学习C#中的ADO.NET。 我不确定是否有绑定源的正确概念。与asp.net一样,我们使用 gridview1.DataBind(); 所以我想在windows应用程序的情况下,我必须这样使用 BindingSource bs = new BindingSource(); bs.DataSource= ds.Tables[0]; gridveiw1.DataSource = bs; 这里是数据集 但是如果我像这样使用 gridview1.DataSource = ds.Tables[0

我在学习C#中的ADO.NET。 我不确定是否有绑定源的正确概念。与asp.net一样,我们使用

gridview1.DataBind();
所以我想在windows应用程序的情况下,我必须这样使用

BindingSource bs = new BindingSource();
bs.DataSource= ds.Tables[0];
gridveiw1.DataSource = bs;
这里是数据集

但是如果我像这样使用

gridview1.DataSource = ds.Tables[0];
它也在起作用

那么为什么我们应该使用绑定源代码。绑定源允许什么特性而不使用它,或者这里不需要绑定源。
提前感谢。

BindingSource是在.NET2.0中开发的,而DataSet/DataTable类是在.NET1.1中最先开发的

当然,您可以直接将DataGridView绑定到DataTable并绕过BindingSource,但BindingSource具有某些优势:

  • 它公开属性来对列表进行排序、过滤列表等,这在其他方面是一件很痛苦的事情。(即,如果您将DataGridView直接绑定到DataTable,那么要对DataTable进行排序,您需要知道DataTable是一个IListSource,它知道作为DataView的基础列表,并且DataView可以进行排序、筛选等)
  • 如果您必须设置主/子视图,那么BindingSource在这方面做得很好