Partilhar via


Creating a Table View (Criar uma Vista de Tabela)

Uma vista de tabela apresenta dados numa ou mais colunas. Cada linha na tabela representa um objeto .NET e cada coluna da tabela representa uma propriedade do objeto ou um valor de script. Você pode definir um modo de exibição de tabela que exibe todas as propriedades de um objeto ou um subconjunto das propriedades de um objeto.

Exibição de uma exibição de tabela

O exemplo a seguir mostra como o Windows PowerShell exibe o objeto System.ServiceProcess.ServiceController que é retornado pelo cmdlet Get-Service. Para esse objeto, o Windows PowerShell definiu uma exibição de tabela que exibe a propriedade Status, a propriedade Name (essa propriedade é uma propriedade alias para a propriedade ServiceName) e a propriedade DisplayName. Cada linha da tabela representa um objeto retornado pelo cmdlet.

Status   Name               DisplayName
------   ----               -----------
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Stopped  AppIDSvc           Application Identity
Running  Appinfo            Application Information

Definindo o modo de exibição de tabela

O XML a seguir mostra o esquema de exibição de tabela para exibir o objeto System.ServiceProcess.ServiceController. Você deve especificar cada propriedade que deseja exibir na exibição de tabela.

<View>
  <Name>service</Name>
  <ViewSelectedBy>
    <TypeName>System.ServiceProcess.ServiceController</TypeName>
  </ViewSelectedBy>
  <TableControl>
    <TableHeaders>
      <TableColumnHeader>
        <Width>8</Width>
      </TableColumnHeader>
      <TableColumnHeader>
        <Width>18</Width>
      </TableColumnHeader>
      <TableColumnHeader>
        <Width>38</Width>
      </TableColumnHeader>
    </TableHeaders>
    <TableRowEntries>
      <TableRowEntry>
        <TableColumnItems>
          <TableColumnItem>
           <PropertyName>Status</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>DisplayName</PropertyName>
          </TableColumnItem>
        </TableColumnItems>
      </TableRowEntry>
    </TableRowEntries>
  </TableControl>
</View>

Os seguintes elementos XML são usados para definir uma exibição de lista:

  • O elemento View é o elemento pai do modo de exibição de tabela. (Este é o mesmo elemento pai para as exibições de controle de lista, ampla e personalizada.)

  • O elemento Name especifica o nome do modo de exibição. Este elemento é necessário para todas as vistas.

  • O elemento ViewSelectedBy define os objetos que usam o modo de exibição. Este elemento é obrigatório.

  • O elemento GroupBy (não mostrado neste exemplo) define quando um novo grupo de objetos é exibido. Um novo grupo é iniciado sempre que o valor de uma propriedade ou script específico é alterado. Este elemento é opcional.

  • O elemento Controles (não mostrado neste exemplo) define os controles personalizados que são definidos pelo modo de exibição de tabela. Os controles oferecem uma maneira de especificar melhor como os dados são exibidos. Este elemento é opcional. Um modo de exibição pode definir seus próprios controles personalizados ou pode usar controles comuns que podem ser usados por qualquer modo de exibição no arquivo de formatação. Para obter mais informações sobre controles personalizados, consulte Criando controles personalizados.

  • O elemento HideTableHeaders (não mostrado neste exemplo) especifica que a tabela não mostrará nenhum rótulo na parte superior da tabela. Este elemento é opcional.

  • O TableControl elemento que define as informações de cabeçalho e linha da tabela. Semelhante a todos os outros modos de exibição, um modo de exibição de tabela pode exibir os valores de propriedades de objeto ou valores gerados por scripts.

Definindo cabeçalhos de coluna

  1. O elemento TableHeaders e seus elementos filho definem o que é exibido na parte superior da tabela.

  2. O elemento TableColumnHeader define o que é exibido na parte superior de uma coluna da tabela. Especifique esses elementos na ordem em que deseja que os cabeçalhos sejam exibidos.

    Não há limite para o número desses elementos que você pode usar, mas o número de elementos de TableColumnHeader em sua exibição de tabela deve ser igual ao número de elementos TableRowEntry que você usa.

  3. O elemento Label especifica o texto exibido. Este elemento é opcional.

  4. O elemento Width especifica a largura (em caracteres) da coluna. Este elemento é opcional.

  5. O elemento Alignment especifica como o rótulo é exibido. O rótulo pode ser alinhado à esquerda, à direita ou centralizado. Este elemento é opcional.

Definindo as linhas da tabela

As exibições de tabela podem fornecer uma ou mais definições que especificam quais dados são exibidos nas linhas da tabela usando os elementos filho do elemento TableRowEntrys. Observe que você pode especificar várias definições para as linhas da tabela, mas os cabeçalhos para as linhas permanecem os mesmos, independentemente da definição de linha usada. Normalmente, uma tabela terá apenas uma definição.

No exemplo a seguir, o modo de exibição fornece uma única definição que exibe os valores de várias propriedades do objeto System.Diagnostics.Process. Uma exibição de tabela pode exibir o valor de uma propriedade ou o valor de um script (não mostrado no exemplo) em suas linhas.

<TableRowEntries>
      <TableRowEntry>
        <TableColumnItems>
          <TableColumnItem>
           <PropertyName>Status</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>
          <TableColumnItem>
            <PropertyName>DisplayName</PropertyName>
          </TableColumnItem>
        </TableColumnItems>
      </TableRowEntry>
    </TableRowEntries>

Os seguintes elementos XML podem ser usados para fornecer definições para uma linha:

  • O elemento TableRowEntries e seus elementos filho definem o que é exibido nas linhas da tabela.

  • O elemento TableRowEntry fornece uma definição da linha. Pelo menos um TableRowEntry é necessário; no entanto, não há limite máximo para o número de elementos que você pode adicionar. Na maioria dos casos, uma vista terá apenas uma definição.

  • O elemento EntrySelectedBy especifica os objetos que são exibidos por uma definição específica. Esse elemento é opcional e é necessário somente quando você define vários elementos TableRowEntry que exibem objetos diferentes.

  • O elemento Wrap especifica que o texto que excede a largura da coluna é exibido na próxima linha. Por padrão, o texto que excede a largura da coluna é truncado.

  • O elemento TableColumnItems define as propriedades ou scripts cujos valores são exibidos na linha.

  • O elemento TableColumnItem define a propriedade ou script cujo valor é exibido na coluna da linha. Um elemento TableColumnItem é necessário para cada coluna da linha. A primeira entrada é exibida na primeira coluna, a segunda entrada na segunda coluna e assim por diante.

  • O elemento PropertyName especifica a propriedade cujo valor é exibido na linha. Você deve especificar uma propriedade ou um script, mas não pode especificar ambos.

  • O elemento ScriptBlock especifica o script cujo valor é exibido na linha. Você deve especificar um script ou uma propriedade, mas não pode especificar ambos.

  • O elemento FormatString especifica um padrão de formato que define como a propriedade ou o valor do script é exibido. Este elemento é opcional.

  • O elemento Alignment especifica como o valor da propriedade ou script é exibido. O valor pode ser alinhado à esquerda, à direita ou centralizado. Este elemento é opcional.

Definindo os objetos que usam o modo de exibição Tabela

Há duas maneiras de definir quais objetos .NET usam o modo de exibição de tabela. Você pode usar o elemento ViewSelectedBy para definir os objetos que podem ser exibidos por todas as definições do modo de exibição ou pode usar o elemento EntrySelectedBy para definir quais objetos são exibidos por uma definição específica do modo de exibição. Na maioria dos casos, um modo de exibição tem apenas uma definição, portanto, os objetos geralmente são definidos pelo elemento ViewSelectedBy.

O exemplo a seguir mostra como definir os objetos que são exibidos pelo modo de exibição de tabela usando os elementos ViewSelectedBy e TypeName. Não há limite para o número de TypeName elementos que você pode especificar, e sua ordem não é significativa.

<View>
  <Name>System.ServiceProcess.ServiceController</Name>
  <ViewSelectedBy>
    <TypeName>System.ServiceProcess.ServiceController</TypeName>
  </ViewSelectedBy>
  <TableControl>...</TableControl>
</View>

Os seguintes elementos XML podem ser usados para especificar os objetos que são usados pela exibição de tabela:

  • O elemento ViewSelectedBy define quais objetos são exibidos pelo modo de exibição de lista.

  • O elemento TypeName especifica o objeto .NET que é exibido pelo modo de exibição. O nome de tipo .NET totalmente qualificado é necessário. Você deve especificar pelo menos um tipo ou conjunto de seleção para a exibição, mas não há um número máximo de elementos que podem ser especificados.

O exemplo a seguir usa os elementos ViewSelectedBy e SelectionSetName. Use conjuntos de seleção onde você tem um conjunto relacionado de objetos que são exibidos usando vários modos de exibição, como quando você define um modo de exibição de lista e um modo de exibição de tabela para os mesmos objetos. Para obter mais informações sobre como criar um conjunto de seleção, consulte Definindo conjuntos de seleção.

<View>
  <Name>System.ServiceProcess.ServiceController</Name>
  <ViewSelectedBy>
    <SelectionSetName>.NET Type Set</SelectionSetName>
  </ViewSelectedBy>
  <TableControl>...</TableControl>
</View>

Os seguintes elementos XML podem ser usados para especificar os objetos que são usados pelo modo de exibição de lista:

  • O elemento ViewSelectedBy define quais objetos são exibidos pelo modo de exibição de lista.

  • O elemento SelectionSetName especifica um conjunto de objetos que podem ser exibidos pelo modo de exibição. Você deve especificar pelo menos um conjunto de seleção ou tipo para o modo de exibição, mas não há um número máximo de elementos que podem ser especificados.

O exemplo a seguir mostra como definir os objetos exibidos por uma definição específica do modo de exibição de tabela usando o elemento EntrySelectedBy. Usando esse elemento, você pode especificar o nome do tipo .NET do objeto, um conjunto de seleção de objetos ou uma condição de seleção que especifica quando a definição é usada. Para obter mais informações sobre como criar condições de seleção, consulte Definindo condições para exibição de dados.

Observação

Ao criar várias definições do modo de exibição de tabela, não é possível especificar cabeçalhos de coluna diferentes. Você pode especificar apenas o que é exibido nas linhas da tabela, como quais objetos são exibidos.

<TableRowEntry>
  <EntrySelectedBy>
    <TypeName>.NET Type</TypeName>
  </EntrySelectedBy>
</TableRowEntry>

Os seguintes elementos XML podem ser usados para especificar os objetos que são usados por uma definição específica do modo de exibição de lista:

  • O elemento EntrySelectedBy define quais objetos são exibidos pela definição.

  • O elemento TypeName especifica o objeto .NET que é exibido pela definição. Ao usar esse elemento, o nome de tipo .NET totalmente qualificado é necessário. Você deve especificar pelo menos um tipo, conjunto de seleção ou condição de seleção para a definição, mas não há um número máximo de elementos que podem ser especificados.

  • O elemento SelectionSetName (não mostrado) especifica um conjunto de objetos que podem ser exibidos por essa definição. Você deve especificar pelo menos um tipo, conjunto de seleção ou condição de seleção para a definição, mas não há um número máximo de elementos que podem ser especificados.

  • O elemento SelectionCondition (não mostrado) especifica uma condição que deve existir para que essa definição seja usada. Você deve especificar pelo menos um tipo, conjunto de seleção ou condição de seleção para a definição, mas não há um número máximo de elementos que podem ser especificados. Para obter mais informações sobre como definir condições de seleção, consulte Definindo condições para exibição de dados.

Usando cadeias de caracteres de formato

As cadeias de caracteres de formatação podem ser adicionadas a uma exibição para definir melhor como os dados são exibidos. O exemplo a seguir mostra como definir uma cadeia de caracteres de formatação para o valor da propriedade StartTime.

<TableColumnItem>
  <PropertyName>StartTime</PropertyName>
  <FormatString>{0:MMM} {0:DD} {0:HH}:{0:MM}</FormatString>
</TableColumnItem>

Os seguintes elementos XML podem ser usados para especificar um padrão de formato:

  • O elemento TableColumnItem define a propriedade ou script cujo valor é exibido na coluna da linha. Um elemento TableColumnItem é necessário para cada coluna da linha. A primeira entrada é exibida na primeira coluna, a segunda entrada na segunda coluna e assim por diante.

  • O elemento PropertyName especifica a propriedade cujo valor é exibido na linha. Você deve especificar uma propriedade ou um script, mas não pode especificar ambos.

  • O elemento FormatString especifica um padrão de formato que define como a propriedade ou o valor do script é exibido.

No exemplo a seguir, o método ToString é chamado para formatar o valor do script. Os scripts podem chamar qualquer método de um objeto. Portanto, se um objeto tiver um método, como ToString, que tenha parâmetros de formatação, o script poderá chamar esse método para formatar o valor de saída do script.

<ListItem>
  <ScriptBlock>
    [string]::Format("{0,-10} {1,-8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))
  </ScriptBlock>
</ListItem>

O seguinte elemento XML pode ser usado para chamar o método ToString:

  • O elemento TableColumnItem define a propriedade ou script cujo valor é exibido na coluna da linha. Um elemento TableColumnItem é necessário para cada coluna da linha. A primeira entrada é exibida na primeira coluna, a segunda entrada na segunda coluna e assim por diante.

  • O elemento ScriptBlock especifica o script cujo valor é exibido na linha. Você deve especificar um script ou uma propriedade, mas não pode especificar ambos.

Ver também

Escrevendo um arquivo de formatação do PowerShell