如何使用BindingSource将数据对象的List绑定到网格?

时间:2010-03-26 00:05:53

标签: c# winforms data-binding datagridview bindingsource

在程序集中,我创建了一个类如下:

[DataObject(true)]
public class A
{
 public int Foo{get;set;}

 [DataObjectMethod[DataObjectMethodType.Select)]
 public static List<A> GetAllA(string ConnectionString)
 {
   // return filled List<A>
 }
}

现在我想在Winforms下使用Gridcontrol显示此List。我虽然是DataGrid 虽然我来自ASP.net,但我首先想到的是

this.dataGridView1.DataSource = A.GetAllA(ConnectionString)

可以使用,但我更喜欢使用BindingSources更好的数据绑定。 (因为我总是听说那是要走的路) 我设法将BindingSource放到表单上,并将DataSource属性设置为类A. 但是我在哪里可以设置SelectMethod及其参数?如果我将dataGridView的DataSource属性设置为BindingSource,它将只显示一个空行。

这是正确的方法吗?是否只需要在向导中进行一些额外的点击,或者我是否需要阅读大量文档才能使其正常工作?

编辑:有没有办法实现自动绑定到我的select方法?或者BindingSource是否仅支持映射列,但不实际绑定数据,这意味着我需要设置DataSource属性?

2 个答案:

答案 0 :(得分:1)

您需要创建DataSource。单击“数据”菜单,然后选择“添加新数据源...”

在Visual Studio中连接数据概述
http://msdn.microsoft.com/en-us/library/wxt2cwcc(VS.80).aspx

  

将您的应用程序连接到数据中   数据库,Web服务或对象,   运行Data Source Configuration Wizard   通过选择添加新数据源   Data Sources Window

Public Class A
    Private _field As String
    Public Property Field() As String
        Get
            Return _field
        End Get
        Set(ByVal value As String)
            _field = value
        End Set
    End Property
End Class

Public Class AListing
    Inherits List(Of A)
End Class
  • 添加数据源时使用AListing作为对象。适用于提供导航的网格视图或详细信息表单。由你来填充它。
  • 添加数据源时使用A作为对象。当您只需要绑定到一个实例时,对于对话框很有用。由你来填充它。

DataSource只是帮助设计人员配置数据绑定。你仍然需要填充对象。如果您不关心设计师的支持,那么打电话就好了。使用BindingSource只允许您使用像“数据表”这样的对象。使用您的示例,如果我使用BindingSource,我可以处理CurrentChanged事件以进行任何其他处理。

this.dataGridView1.DataSource = A.GetAllA(ConnectionString);
//-or-
this.bindingSource1.DataSource = A.GetAllA(ConnectionString);

答案 1 :(得分:0)

让A类从配置文件中检索连接字符串,而不是GetAllA方法中的参数。一旦你的方法没有参数,就应该可以在向导中选择它。