Creating a Table View (Criar uma Vista de Tabela)

Uma visualização de tabela apresenta dados em uma ou mais colunas. Cada linha da tabela representa um objeto .NET, e cada coluna da tabela representa uma propriedade do objeto ou um valor de script. Pode definir uma vista de mesa que exibe todas as propriedades de um objeto ou um subconjunto das propriedades de um objeto.

Uma exibição de vista de mesa

O exemplo a seguir mostra como Windows PowerShell exibe o objeto System.Serviceprocess.Servicecontroller que é devolvido pelo cmdlet Get-Service. Para este objeto, Windows PowerShell definiu uma vista de mesa que exibe a Status propriedade, a Name propriedade (esta propriedade é uma propriedade de alias para a ServiceName propriedade), e a DisplayName propriedade. Cada linha na mesa representa um objeto devolvido 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 a vista de mesa

O seguinte XML mostra o esquema de visualização da tabela para visualização do Sistema.Serviceprocess.Servicecontroller? Displayproperty=Fullname object. Tem de especificar cada imóvel que pretende ser exibido na vista da mesa.

<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>

São utilizados os seguintes elementos XML para definir uma vista de lista:

  • O elemento 'Ver' é o elemento-mãe da vista de mesa. (Este é o mesmo elemento-mãe para a lista, vistas amplas e personalizadas de controlo.)

  • O elemento Nome especifica o nome da vista. Este elemento é necessário para todas as vistas.

  • O elemento ViewSelectedBy define os objetos que utilizam a vista. Este elemento é necessário.

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

  • O elemento Controlos (não apresentado neste exemplo) define os controlos personalizados que são definidos pela vista de tabela. Os controlos dão-lhe uma forma de especificar ainda mais como os dados são apresentados. Este elemento é opcional. Uma vista pode definir os seus próprios controlos personalizados, ou pode usar controlos comuns que podem ser usados por qualquer vista no ficheiro formatação. Para obter mais informações sobre controlos personalizados, consulte criar controlos personalizados.

  • O elemento HideTableHeaders (não aparece neste exemplo) especifica que a tabela não apresentará quaisquer etiquetas no topo da tabela. Este elemento é opcional.

  • O elemento TableControl que define as informações do cabeçalho e da linha da tabela. Semelhante a todas as outras vistas, uma vista de mesa pode exibir os valores de propriedades ou valores do objeto gerados por scripts.

Cabeçalhos de coluna definindo

  1. O elemento TableHeaders e os seus elementos infantis definem o que é mostrado no topo da tabela.

  2. O elemento TableColumnHeader define o que é apresentado no topo de uma coluna da tabela. Especifique estes elementos na ordem que pretende que os cabeçalhos são apresentados.

    Não há limite para o número destes elementos que pode utilizar, mas o número de elementos TableColumnHeader na sua vista de mesa deve ser igual ao número de elementos TableRowEntry que utiliza.

  3. O elemento 'Etiqueta' especifica o texto que é apresentado. Este elemento é opcional.

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

  5. O elemento alinhamento especifica como a etiqueta é apresentada. A etiqueta pode ser alinhada à esquerda, à direita ou centrada. Este elemento é opcional.

Definindo as Linhas de Mesa

As vistas do quadro podem fornecer uma ou mais definições que especifiquem que dados são apresentados nas linhas da tabela utilizando os elementos infantis do elemento TableRowEntries. Note que 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 utilizada. Normalmente, uma mesa terá apenas uma definição.

No exemplo seguinte, a vista fornece uma única definição que exibe os valores de várias propriedades do Sistema.Diagnósticos.Processo? Displayproperty=Fullname object. Uma vista de mesa pode mostrar o valor de uma propriedade ou o valor de um script (não mostrado no exemplo) nas 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 utilizados para fornecer definições para uma linha:

  • O elemento TableRowEntries e os seus elementos infantis definem o que é apresentado nas linhas da tabela.

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

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

  • O elemento wrap especifica que o texto que excede a largura da coluna é apresentado na linha seguinte. Por predefinição, o texto que excede a largura da coluna é truncado.

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

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

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

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

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

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

Definição dos objetos que usam a vista da mesa

Existem duas formas de definir quais os objetos .NET que usam a vista de mesa. Pode utilizar o elemento ViewSelectedBy para definir os objetos que podem ser exibidos por todas as definições da vista, ou pode utilizar o elemento EntrySelectedBy para definir quais os objetos que são apresentados por uma definição específica da vista. Na maioria dos casos, uma vista tem apenas uma definição, por isso os objetos são tipicamente definidos pelo elemento ViewSelectedBy.

O exemplo a seguir mostra como definir os objetos que são apresentados pela vista de mesa utilizando os elementos ViewSelectedBy e TypeName. Não há limite para o número de elementos TypeName que pode especificar, e a sua encomenda 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 utilizados para especificar os objetos utilizados pela vista de tabela:

  • O elemento ViewSelectedBy define quais os objetos que são apresentados pela vista da lista.

  • O elemento TypeName especifica o objeto .NET que é visualizado pela vista. É necessário o nome do tipo .NET totalmente qualificado. Deve especificar pelo menos um tipo ou conjunto de seleção para a vista, mas não há um número máximo de elementos que possam ser especificados.

O exemplo a seguir utiliza os elementos ViewSelectedBy e SelectionSetName. Utilize conjuntos de seleção onde tenha um conjunto de objetos relacionados que são exibidos usando múltiplas vistas, tais como quando define uma vista de lista e uma vista de mesa para os mesmos objetos. Para obter mais informações sobre como criar um conjunto de seleção, consulte Definição de 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 utilizados para especificar os objetos que são utilizados pela vista da lista:

  • O elemento ViewSelectedBy define quais os objetos que são apresentados pela vista da lista.

  • O elemento SelectionSetName especifica um conjunto de objetos que podem ser exibidos pela vista. Deve especificar pelo menos um conjunto de seleção ou um tipo para a vista, mas não há um número máximo de elementos que possam ser especificados.

O exemplo a seguir mostra como definir os objetos apresentados por uma definição específica da vista de tabela utilizando o elemento EntrySelectedBy. Utilizando este elemento, pode especificar o nome do tipo .NET do objeto, um conjunto de objetos de seleção ou uma condição de seleção que especifica quando a definição é utilizada. Para obter mais informações sobre como criar condições de seleção, consulte condições de definição para visualização de dados.

Nota

Ao criar várias definições da vista de tabela, não é possível especificar diferentes cabeçalhos de colunas. Pode especificar apenas o que é apresentado nas linhas da tabela, como os objetos que são apresentados.

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

Os seguintes elementos XML podem ser utilizados para especificar os objetos que são utilizados por uma definição específica da vista da lista:

  • O elemento EntrySelectedBy define quais os objetos que são apresentados pela definição.

  • O elemento TypeName especifica o objeto .NET que é apresentado pela definição. Ao utilizar este elemento, é necessário o nome do tipo .NET totalmente qualificado. 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 possam ser especificados.

  • O elemento SelectionSetName (não mostrado) especifica um conjunto de objetos que podem ser exibidos por esta definição. 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 possam ser especificados.

  • O elemento SelecçãoCondição (não mostrado) especifica uma condição que deve existir para que esta definição seja utilizada. 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 possam ser especificados. Para obter mais informações sobre a definição das condições de seleção, consulte as condições de definição dos dados de visualização.

Usando cordas de formato

As cordas de formatação podem ser adicionadas a uma visão para definir ainda mais como os dados são apresentados. O exemplo a seguir mostra como definir uma cadeia de formatação para o valor do StartTime imóvel.

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

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

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

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

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

No exemplo seguinte, o ToString método é chamado para formatar o valor do script. Os scripts podem chamar qualquer método de um objeto. Portanto, se um objeto tem um método, ToString como, que tem parâmetros de formatação, o script pode 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 ToString método:

  • O elemento TableColumnItem define a propriedade ou o script cujo valor é apresentado na coluna da linha. É necessário um elemento TableColumnItem 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 é apresentado na linha. Você deve especificar um script ou uma propriedade, mas você não pode especificar ambos.

Consulte também

Writing a PowerShell Formatting File (Escrever um Ficheiro de Formatação do PowerShell)