Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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
Vb.net 组合框绑定-在bindingsource中显示字段名_Vb.net_Combobox_Bindingsource - Fatal编程技术网

Vb.net 组合框绑定-在bindingsource中显示字段名

Vb.net 组合框绑定-在bindingsource中显示字段名,vb.net,combobox,bindingsource,Vb.net,Combobox,Bindingsource,我正在尝试使用bindingsource作为组合框的数据源。组合框的显示和值成员将是bindingsource数据源中的字段名 目前,我使用一个填充datatable并将其分配给combobox的数据源的过程。因为我已经用数据填充了bindingsource,所以只设置绑定而不是继续使用下面的代码是有意义的: Dim dtfields As New DataTable dtfields = mySqlref.sqlobj.SelectData(String.Format("selec

我正在尝试使用bindingsource作为组合框的数据源。组合框的显示和值成员将是bindingsource数据源中的字段名

目前,我使用一个填充datatable并将其分配给combobox的数据源的过程。因为我已经用数据填充了bindingsource,所以只设置绑定而不是继续使用下面的代码是有意义的:

  Dim dtfields As New DataTable
    dtfields = mySqlref.sqlobj.SelectData(String.Format("select column_name from information_schema.columns where table_name = '{0}' order by ordinal_position", mydata.Table), SqlLibrary.SqlLibrary.SelectType.datatable)

    cboField.DataSource = dtfields
    cboField.ValueMember = "column_name"
    cboField.DisplayMember = "column_name"

有人能给我指出正确的方向吗?感谢阅读。

我在这里寻找的答案是:

如果您的字段名已经在bindingsource中,那么您可以使用linq创建这些字段名的数组,而不是使用单独的查询来调用数据库中的字段名

以下是我最终使用的代码:

 Dim arraynames = (From x As DataColumn In mydata.Table.Columns Select x.ColumnName).ToArray()
    cboField.DataSource = arraynames

在本例中,“mydata”是一个数据视图。它是创建绑定源的对象。我使用dataview中的datatable对象将列名提取到数组中

我对你的问题没有把握。bindingSource的结构如何(它与
dtfields
有多大不同)?请记住,它可以直接设置为
DataSource
。例如:
Dim binding As BindingSource=New BindingSource()binding.DataSource=dtfields cboField.DataSource=binding
BindingSource包含数据库中一个表中的所有数据(许多行,大约17个字段)。dtFields仅包含此表中字段的名称。因为bindingsource已经有了包含我所有字段名的数据,所以我想找到一些方法来获取Enumerator或列出这些字段名,以便将其绑定到我的combobox。有道理吗?是的,当然。但是仅仅说BindingSource没有任何意义;它的行为仅仅是一个容器(例如,或者一个数据表;如我的示例所示)。组合框需要一个1D数据源,您可以从2D数据集中选择所需的确切列(正如您使用DataTable所做的那样),或者从整个数据中创建一个1D集合。但为了获得帮助,您必须说出确切的条件(输入数据集和预期的1D集合);你所说的和你发布的代码没有提供任何信息。