Войти

Показать полную графическую версию : Помогите создать фильтр c выводом в Grid


butunin@vk
03-12-2015, 12:34
Помогите создать фильтр в Grid , и вообще можно ли это реализовать.

Собрал из кусков всего чего нашел в интернете + допилил сам, функцию подключения к фермам 2012 R2 в Shadow + создал для этого GUI
Суть проста.
Подключится к BD , где находятся базы RDS , взять от туда таблицу с UserName, PoolName, ServerName, SessionId
В базах создал Viewer

CREATE VIEW [dbo].[Shadowing]
AS
SELECT Session.UserName, Pool.DisplayName AS PoolName, Target.Name AS ServerName, Session.SessionId
FROM rds.Session AS Session
INNER JOIN rds.Target AS Target ON Target.Id = Session.TargetId
INNER JOIN rds.Pool AS Pool ON Target.PoolId = Pool.Id
WHERE (Session.State = 0)
GO


далее через GRID , создал форму и подключение в shadow


$CBSQLServer = "aqua"
$CBDB = "fdrdsdb"
$CBDB2 = "CRMRDSDB"
$CBDB3 = "RDSDB"

$CBDBConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList "Server=$CBSQLServer;Database=$CBDB;Integrated Security=SSPI"
$CBDBConnection.Open()
$SQLCommand = $CBDBConnection.CreateCommand()
$SQLCommand.CommandText = ("SELECT * FROM Shadowing")
$SQLReader = $SQLCommand.ExecuteReader()
$ShadowingView = New-Object System.Data.DataTable
$ShadowingView.Load($SQLReader)
$SQLReader.Close()
$CBDBConnection1 = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList "Server=$CBSQLServer;Database=$CBDB2;Integrated Security=SSPI"
$CBDBConnection1.Open()
$SQLCommand1 = $CBDBConnection1.CreateCommand()
$SQLCommand1.CommandText = ("SELECT * FROM Shadowing")
$SQLReader1 = $SQLCommand1.ExecuteReader()
$ShadowingView1 = New-Object System.Data.DataTable
$ShadowingView1.Load($SQLReader1)
$SQLReader1.Close()
$CBDBConnection2 = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList "Server=$CBSQLServer;Database=$CBDB3;Integrated Security=SSPI"
$CBDBConnection2.Open()
$SQLCommand2 = $CBDBConnection2.CreateCommand()
$SQLCommand2.CommandText = ("SELECT * FROM Shadowing")
$SQLReader2 = $SQLCommand2.ExecuteReader()
$ShadowingView2 = New-Object System.Data.DataTable
$ShadowingView2.Load($SQLReader2)
$SQLReader2.Close()

function Get-ProcessInfo
{
$array = New-Object System.Collections.ArrayList
$Script:procInfo = $ShadowingView1 + $ShadowingView + $ShadowingView2 | Select UserName, PoolName, ServerName, SessionId| sort -Property UserName
$array.AddRange($procInfo)
$dataGrid1.DataSource = $array
$form1.refresh()
}


function GenerateForm
{

[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null



$form1 = New-Object System.Windows.Forms.Form
$label1 = New-Object System.Windows.Forms.Label
$button3 = New-Object System.Windows.Forms.Button
$button2 = New-Object System.Windows.Forms.Button
$button4 = New-Object System.Windows.Forms.Button
$button1 = New-Object System.Windows.Forms.Button
$dataGrid1 = New-Object System.Windows.Forms.DataGrid
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState


$button3_OnClick =
{
$Form1.Close()
}

$button1_OnClick =
{
Get-ProcessInfo
}


$button2_OnClick =
{
$selectedRow = $dataGrid1.CurrentRowIndex
if (($procid = $Script:procInfo[$selectedRow]))
{
mstsc /v:($procid.ServerName) /shadow:($procid.SessionId) /control /NoConsentPrompt
}
}


$button4_OnClick =
{
$selectedRow = $dataGrid1.CurrentRowIndex
if (($procid = $Script:procInfo[$selectedRow]))
{
mstsc /v:($procid.ServerName) /shadow:($procid.SessionId) /NoConsentPrompt
}
}

$OnLoadForm_UpdateGrid =
{
Get-ProcessInfo
}



$form1.Text = "Подключатель"
$form1.Name = "form1"
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 517
$System_Drawing_Size.Height = 414
$form1.ClientSize = $System_Drawing_Size

$label1.TabIndex = 4
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 155
$System_Drawing_Size.Height = 23
$label1.Size = $System_Drawing_Size
$label1.Text = "Подключатель"
$label1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif", 9.75, 2, 3, 0)
$label1.ForeColor = [System.Drawing.Color]::FromArgb(255, 0, 102, 204)

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 13
$System_Drawing_Point.Y = 13
$label1.Location = $System_Drawing_Point
$label1.DataBindings.DefaultDataSourceUpdateMode = 0
$label1.Name = "label1"

$form1.Controls.Add($label1)

$button3.TabIndex = 3
$button3.Name = "button3"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 75
$System_Drawing_Size.Height = 23
$button3.Size = $System_Drawing_Size
$button3.UseVisualStyleBackColor = $True

$button3.Text = "Закрыть"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 380
$System_Drawing_Point.Y = 379
$button3.Location = $System_Drawing_Point
$button3.DataBindings.DefaultDataSourceUpdateMode = 0
$button3.add_Click($button3_OnClick)

$form1.Controls.Add($button3)

$button2.TabIndex = 2
$button2.Name = "button2"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 75
$System_Drawing_Size.Height = 23
$button2.Size = $System_Drawing_Size
$button2.UseVisualStyleBackColor = $True

$button2.Text = "Контроль"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 230
$System_Drawing_Point.Y = 379
$button2.Location = $System_Drawing_Point
$button2.DataBindings.DefaultDataSourceUpdateMode = 0
$button2.add_Click($button2_OnClick)

$form1.Controls.Add($button2)

$button4.Text = "Наблюдение"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 150
$System_Drawing_Point.Y = 379
$button4.Location = $System_Drawing_Point
$button4.DataBindings.DefaultDataSourceUpdateMode = 0
$button4.add_Click($button4_OnClick)

$form1.Controls.Add($button4)

$button1.TabIndex = 1
$button1.Name = "button1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 75
$System_Drawing_Size.Height = 23
$button1.Size = $System_Drawing_Size
$button1.UseVisualStyleBackColor = $True

$button1.Text = "Обновить"

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 13
$System_Drawing_Point.Y = 379
$button1.Location = $System_Drawing_Point
$button1.DataBindings.DefaultDataSourceUpdateMode = 0
$button1.add_Click($button1_OnClick)

$form1.Controls.Add($button1)

$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Width = 492
$System_Drawing_Size.Height = 308
$dataGrid1.Size = $System_Drawing_Size
$dataGrid1.DataBindings.DefaultDataSourceUpdateMode = 0
$dataGrid1.HeaderForeColor = [System.Drawing.Color]::FromArgb(255, 0, 0, 0)
$dataGrid1.Name = "dataGrid1"
$dataGrid1.DataMember = ""
$dataGrid1.TabIndex = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 13
$System_Drawing_Point.Y = 48
$dataGrid1.Location = $System_Drawing_Point

$form1.Controls.Add($dataGrid1)


$InitialFormWindowState = $form1.WindowState


$form1.add_Load($OnLoadForm_UpdateGrid)


$form1.ShowDialog() | Out-Null

}


GenerateForm


По итогу получилась такая формачка
http://s019.radikal.ru/i605/1512/36/ff952b46c4fd.jpg

Если обратить внимание столбец "UserName" достаточно большой, так вот вопрос... есть ли режим фильтра в GRID который бы можно было в крутить сюда и по буквам уже чтобы шла фильтрация?

Iska
03-12-2015, 12:48
Отдельным полем, не? Сама фильтрация, например: Свойство BindingSource.Filter (System.Windows.Forms) (https://msdn.microsoft.com/ru-ru/library/system.windows.forms.bindingsource.filter(v=vs.110).aspx).

butunin@vk
03-12-2015, 13:16
Да, все равно как , главное , чтобы мне было легко это сделать, и работало ...

BindingSource.Filter (System.Windows.Forms). »

Есть примеры на PS ?

greg zakharov
03-12-2015, 18:06
Хм... как насчет Out-GridView?

Iska
03-12-2015, 19:25
Есть примеры на PS ? »
Я даже не пробовал искать. Можете попробовать поискать сами или подождать коллег.

чтобы мне было легко это сделать, и работало ... »
См. выше:
как насчет Out-GridView? »




© OSzone.net 2001-2012