在程序集中,我创建了一个类如下:
[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属性?
答案 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方法中的参数。一旦你的方法没有参数,就应该可以在向导中选择它。