Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Помогите создать фильтр c выводом в Grid (http://forum.oszone.net/showthread.php?t=308723)

butunin@vk 03-12-2015 12:34 2581018

Помогите создать фильтр c выводом в Grid
 
Помогите создать фильтр в 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




По итогу получилась такая формачка
Скрытый текст


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

Iska 03-12-2015 12:48 2581023

Отдельным полем, не? Сама фильтрация, например: Свойство BindingSource.Filter (System.Windows.Forms).

butunin@vk 03-12-2015 13:16 2581030

Да, все равно как , главное , чтобы мне было легко это сделать, и работало ...

Цитата:

Цитата Iska
BindingSource.Filter (System.Windows.Forms). »

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

greg zakharov 03-12-2015 18:06 2581098

Хм... как насчет Out-GridView?

Iska 03-12-2015 19:25 2581121

Цитата:

Цитата butunin@vk
Есть примеры на PS ? »

Я даже не пробовал искать. Можете попробовать поискать сами или подождать коллег.

Цитата:

Цитата butunin@vk
чтобы мне было легко это сделать, и работало ... »

См. выше:
Цитата:

Цитата greg zakharov
как насчет Out-GridView? »



Время: 21:55.

Время: 21:55.
© OSzone.net 2001-