2016-07-29 5 views
0

背景:変更のDataGrid - PowerShellの

私はXMLとPowerShellを使用してGUIを作成しています。 PowerShellを使用してGUIに機能を追加しています。私のGUIには、コンボボックス(ドロップダウンmeuns)だけでなく、データグリッドの結果をフィルタリングするテキストボックスがあります。私は現在、テキストボックスの結果とデータグリッドを変更することに取り組んでいます。

私が達成しようとしている何

:テキストとデータグリッドの変化で

結果がテキストボックスに入力しました。ユーザが「W」を入力した場合、「W」​​で始まるすべての結果が表示されます。

問題:

私はトラブルデータグリッドの内容を変更することを持っています。私はItemsSourceを編集しようとしました。ユーザーがテキストボックスから文字を後退させたときにデータグリッドテーブルを再投入していなかったので、これは動作しませんでした。私はまた、DatagridのItemsプロパティを編集しようとしました。ただし、itemsプロパティは編集できません。私は同様の問題hereへの解決策を見つけたが、私は私の現在のコードの彼のソリューションを利用できませんでした。

コード:

add-type @" 
    public class Server 
    { 
     public Server() {} 

     public string Column1 { get; set; } 
     public string Column2 { get; set; } 
     public string Column3 { get; set; } 
     public string Column4 { get; set; } 
     public string Column5 { get; set; } 
     public string Column6 { get; set; } 
    } 
"@ -Language CsharpVersion3 


[System.Collections.ArrayList] $Server = New-Object "System.Collections.ArrayList" 

$GUI | ForEach-Object { 
$ServerToAdd = new-object Server 
$ServerToAdd.Column1 = $_.Results1 
$ServerToAdd.Column2 = $_.Results2 
$ServerToAdd.Column3 = $_.Results3 
$ServerToAdd.Column4 = $_.Results4 
$ServerToAdd.Column5 = $_.Results5 
$ServerToAdd.Column6 = $_.Results6 

$Server.add($ServerToAdd) | Out-Null 
} 

$GUI.DataGrid.ItemsSource = $Server 

$GUI.TextBox.Add_TextChanged({ 

    $InputText = $GUI.TextBox.Text 

    $GUI.DataGrid.Items | Where-Object { $_.Column1.Contains($InputText) } 

}) 

答えて

1

私はそれがのDataTableオブジェクトの代わりに、配列を作るのがベストだと思います。

あなたは、このようにフィルタリングを行う簡単にそれはあなたにデータソースとしての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 
+0

ありがとうございました。これはうまくいった。 –

関連する問題