我已经使用2个组合框构建了一个WPF表单,这两个组合框都填充了Nested Hashtable的查询。
当脚本运行并加载表单时, cboAgencies
将填充。 cboOffices
根据cboAgencies
中的选择$cboAgencies.Add_SelectionChanged({
$Script:selectedAgency = $cboAgencies.SelectedItem.ToString()
$Script:cboOffices.Items.Clear()
$Script:selectedAdmin = $null
Switch($Script:selectedAgency) {
subdivision1 {
$Script:selectedAdmin = 'division2'
$Script:arr_Offices = ($Script:hash_AgencyOffices[$Script:selectedAdmin][$Script:selectedAgency].Keys | Sort-Object)
$Script:arr_Offices | ForEach-Object {
$Script:cboOffices.Items.Add($_) | Out-Null
}
break
}
subdivision2 {
$Script:selectedAdmin = 'division2'
$Script:arr_Offices = ($Script:hash_AgencyOffices[$Script:selectedAdmin][$Script:selectedAgency].Keys | Sort-Object)
$Script:arr_Offices | ForEach-Object {
$Script:cboOffices.Items.Add($_) | Out-Null
}
break
}
division1 {
$Script:selectedAdmin = 'division1'
$Script:arr_Offices = ($Script:hash_AgencyOffices[$Script:selectedAdmin][$Script:selectedAgency].Keys | Sort-Object)
$Script:arr_Offices | ForEach-Object {
$Script:cboOffices.Items.Add($_) | Out-Null
}
break
}
}
})
列出了所选代理商特定的办公地点。
或者,它应该是。
以下是相关代码:
. .\script.ps1
注意:代码是匿名的。哈希表中的实际除法或细分名称中没有空格。以防这是一个值得关注的问题。
使用$cboAgencies.SelectedItem
运行此代码我查询各种变量并发现以下变量都是正确的:
$Script:cboAgencies.SelectedItem
(和$selectedAgency
) $Script:selectedAgency
(和$selectedAdmin
) $Script:selectedAdmin
(和$Script:arr_Offices = ($Script:hash_AgencyOffices[$Script:selectedAdmin][$Script:selectedAgency].Keys | Sort-Object)
) 但是$ arr_Offices是空的,这意味着问题发生在这一行:
Switch
我通过将其置于$Script:arr_Offices = ($Script:hash_AgencyOffices['division2']['subdivision1'] | Sort-Object)
$Script:arr_Offices | ForEach-Object {
$Script:cboOffices.Items.Add($_) | Out-Null
}
函数之外进一步确认了这一点:
$arr_Offices
$cboOffices
和this.setState({results: something})
填好。
我在这里做错了什么?
答案 0 :(得分:2)
根据您的关联问题,$script:hash_AgencyOffices[$Script:selectedAdmin][$Script:selectedAgency]
会生成一个字符串数组,但它不会有.Keys
属性。
您的数据结构是“根哈希表,其中包含密钥,其值为哈希表,其中包含密钥,其值为直接包含内容的数组”。
因此,您可以使用AgencyOffices['division2'].Keys
和AgencyOffices['division2']['subdivision1']
,但不能使用AgencyOffices['division2']['subdivision1'].Keys
。