使用TextBox更改DataGrid - PowerShell

时间:2016-07-29 15:58:56

标签: wpf powershell datagrid

背景

我正在使用XML和PowerShell创建GUI。我正在使用PowerShell为GUI添加功能。在我的GUI中,有Comboboxes(下拉菜单)以及一个过滤Datagrid结果的文本框。我目前正致力于使用文本框的结果更改Datagrid。

我正在努力实现的目标:

Datagrid中的结果随文本框中输入的文本而变化。例如,如果用户输入“W”,则将列出以“W”开头的所有结果。

问题:

我无法更改Datagrid的内容。我试过编辑ItemsSource。这不起作用,因为当用户从文本框中缩回字符时,Datagrid没有重新填充表格。我还尝试编辑Datagrid的Items属性。但是,items属性不可编辑。我找到了类似问题here的解决方案,但我无法在我当前的代码中使用他的解决方案。

代码:

<form>
    <input id="option1a" name="option1" type="radio" value="a"><label for="option1a">Option 1A</label>
    <input checked id="option1b" name="option1" type="radio" value="b"><label for="option1b">Option 1B</label>
    <input id="option1c" name="option1" type="radio" value="c"><label for="option1c">Option 1C</label>
    <hr>
    <input id="option2a" name="option2" type="radio" value="a"><label for="option2a">Option 2A</label>
    <input checked id="option2b" name="option2" type="radio" value="b"><label for="option2b">Option 2B</label>
    <input id="option2c" name="option2" type="radio" value="c"><label for="option2c">Option 2C</label>
    <hr>
    <button type="reset">Clear</button>
</form>

1 个答案:

答案 0 :(得分:1)

我认为最好使用 DataTable 对象而不是数组。

然后,您可以将它作为DataSource放到DataGrid控件中,然后轻松执行这样的过滤:

$DataSource.DefaultView.RowFilter = "Column1 LIKE 'W%'"
$DataGrid.DataSource = $DataSource

我已经举了一个例子,它是如何工作的。我希望能得到这个想法。

$dt = New-Object system.Data.DataTable
$dt.Columns.Add((New-Object System.Data.DataColumn('Column1', 'string')))
$dt.Columns.Add((New-Object System.Data.DataColumn('Column2', 'int')))
$dt.Columns.Add((New-Object System.Data.DataColumn('Column3', 'string')))
$null=$dt.Rows.Add('RowOne',100,'This')
$null=$dt.Rows.Add('RowTwo',150,'That')
$null=$dt.Rows.Add('RowThree',200,'What')

$filter = "Column2 > 100 AND Column3 LIKE 'W%'"
$dt.DefaultView.RowFilter = $filter
$dt.DefaultView

Column1  Column2 Column3
-------  ------- -------
RowThree     200 What