从Powershell以编程方式将 WPF组合框的ItemSource
设置为DataRowCollection
时,只有一个条目,我收到此错误消息:
大致翻译为:
如果我的查询结果是带有两个或多个条目的DataRowCollection
,则ItemSource
的二传手ComboBox
可以正常工作。该函数是用Powershell编写的,我已经尝试将DataRowCollection
强制转换为数组,以解决此异常。
如果ItemSource
只有一个条目,我应该向DataRowCollection
设置者传递什么?
在此先感谢您的帮助。
编辑
这是一些要求的代码:
$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null
$connection.Close()
$rows = $dataSet.Tables[0].Rows #i am querying only one table
#$combobox is the combobox element of the wpf window
$combobox.ItemSource = $rows #If $rows has just one element, this is the point where the exception occurs
最佳答案
我发现了一些解决方法。
现在,我将单个DataRow
项目转换为数组并添加一个空字符串。如果不添加空字符串,则会发生相同的异常。
$rows = $dataSet.Tables[0].Rows
#simple hack, to ensure this method always returns an array.
#if just one element is in Rows, wpf complains about a single datarow not being an enumerable
if($rows.Count -eq 1)
{
$rows = @($rows,"")
}
现在,二传手
ItemSource
接受$rows
,但是当然,空字符串将显示在ComboBox
中。关于c# - 设置为单个项目集合时,Combobox Itemssource引发异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33504196/