Поделиться через


Создание представления таблицы

В представлении таблицы отображаются данные в одном или нескольких столбцах. Каждая строка в таблице представляет объект .NET, а каждый столбец таблицы представляет свойство объекта или значения скрипта. Вы можете определить представление таблицы, отображающее все свойства объекта или подмножества свойств объекта.

Отображение представления таблицы

В следующем примере показано, как Windows PowerShell отображает объект System.ServiceProcess.ServiceController, возвращаемый командлетом get-Service. Для этого объекта Windows PowerShell определил представление таблицы, отображающее свойство Status, свойство Name (это свойство псевдонима для свойства ServiceName), а также свойство DisplayName. Каждая строка в таблице представляет объект, возвращаемый командлетом.

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

Определение представления таблицы

В следующем XML-файле показана схема представления таблицы для отображения объекта System.ServiceProcess.ServiceController. Необходимо указать каждое свойство, которое нужно отобразить в представлении таблицы.

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

Для определения представления списка используются следующие XML-элементы:

  • Элемент View является родительским элементом представления таблицы. (Это тот же родительский элемент для представлений списка, широких и настраиваемых элементов управления.)

  • Элемент имени указывает имя представления. Этот элемент необходим для всех представлений.

  • Элемент ViewSelectedBy определяет объекты, использующие представление. Этот элемент является обязательным.

  • Элемент GroupBy (не показан в этом примере) определяет, когда отображается новая группа объектов. Новая группа запускается всякий раз, когда изменяется значение определенного свойства или скрипта. Этот элемент является необязательным.

  • Элемент элементов управления (не показан в этом примере) определяет пользовательские элементы управления, определенные представлением таблицы. Элементы управления позволяют дополнительно указать способ отображения данных. Этот элемент является необязательным. Представление может определять собственные пользовательские элементы управления или использовать общие элементы управления, которые можно использовать любым представлением в файле форматирования. Дополнительные сведения о пользовательских элементах управления см. в создании пользовательских элементов управления.

  • Элемент HideTableHeaders (не отображается в этом примере) указывает, что таблица не будет отображать метки в верхней части таблицы. Этот элемент является необязательным.

  • Элемент TableControl, определяющий сведения о заголовке и строке таблицы. Как и во всех других представлениях, представление таблицы может отображать значения свойств объекта или значений, созданных скриптами.

Определение заголовков столбцов

  1. Элемент TableHeaders и его дочерние элементы определяют, что отображается в верхней части таблицы.

  2. Элемент TableColumnHeader определяет, что отображается в верхней части столбца таблицы. Укажите эти элементы в порядке отображения заголовков.

    Число используемых элементов не ограничено, но количество используемых элементов TableColumnHead er в представлении таблицы должно быть равно количеству используемых элементов TableRowEnt ry.

  3. Элемент метки указывает отображаемый текст. Этот элемент является необязательным.

  4. Элемент Width указывает ширину столбца (в символах). Этот элемент является необязательным.

  5. Элемент выравнивания указывает, как отображается метка. Метка может быть выровнена слева, справа или по центру. Этот элемент является необязательным.

Определение строк таблицы

Представления таблиц могут предоставлять одно или несколько определений, которые указывают, какие данные отображаются в строках таблицы с помощью дочерних элементов элемента TableRowEntries. Обратите внимание, что можно указать несколько определений для строк таблицы, но заголовки строк остаются неизменными независимо от того, какое определение строки используется. Как правило, таблица будет содержать только одно определение.

В следующем примере представление содержит одно определение, отображающее значения нескольких свойств объекта System.Diagnostics.Process. Представление таблицы может отображать значение свойства или значения скрипта (не показанного в примере) в строках.

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

Следующие XML-элементы можно использовать для предоставления определений для строки:

  • Элемент TableRowEntries и его дочерние элементы определяют, что отображается в строках таблицы.

  • Элемент TableRowEntry предоставляет определение строки. Требуется по крайней мере один TableRowEntry; Однако максимальное количество добавляемых элементов не ограничено. В большинстве случаев представление будет иметь только одно определение.

  • Элемент EntrySelectedBy указывает объекты, отображаемые определенным определением. Этот элемент является необязательным и необходим только при определении нескольких элементов TableRowEntry, отображающих различные объекты.

  • Элемент Wrap указывает, что текст, превышающий ширину столбца, отображается в следующей строке. По умолчанию текст, превышающий ширину столбца, усечен.

  • Элемент tableColumnItems определяет свойства или скрипты, значения которых отображаются в строке.

  • Элемент TableColumnItem определяет свойство или скрипт, значение которого отображается в столбце строки. Элемент TableColumnItem требуется для каждого столбца строки. Первая запись отображается в первом столбце, второй записи во втором столбце и т. д.

  • Элемент PropertyName указывает свойство, значение которого отображается в строке. Необходимо указать свойство или скрипт, но нельзя указать оба.

  • Элемент ScriptBlock указывает сценарий, значение которого отображается в строке. Необходимо указать сценарий или свойство, но нельзя указать оба.

  • Элемент formatString указывает шаблон формата, определяющий отображение значения свойства или скрипта. Этот элемент является необязательным.

  • Элемент выравнивания указывает, как отображается значение свойства или скрипта. Значение можно выровнять слева, справа или по центру. Этот элемент является необязательным.

Определение объектов, использующих представление таблицы

Существует два способа определить, какие объекты .NET используют представление таблицы. Элемент ViewSelectedBy можно использовать для определения объектов, которые можно отобразить всеми определениями представления, или использовать элемент EntrySelectedBy для определения объектов, отображаемых определенным определением представления. В большинстве случаев представление имеет только одно определение, поэтому объекты обычно определяются элементом ViewSelectedBy.

В следующем примере показано, как определить объекты, отображаемые в представлении таблицы с помощью элементов ViewSelectedBy и TypeName. Число элементов TypeName , которые можно указать, не ограничено, а их порядок не имеет значения.

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

Для указания объектов, используемых представлением таблицы, можно использовать следующие XML-элементы:

  • Элемент ViewSelectedBy определяет, какие объекты отображаются представлением списка.

  • Элемент TypeName указывает объект .NET, отображаемый представлением. Требуется полное имя типа .NET. Для представления необходимо указать по крайней мере один тип или набор выбора, но можно указать максимальное количество элементов.

В следующем примере используются элементы ViewSelectedBy и SelectionSetName. Используйте наборы выбора, в которых есть связанный набор объектов, отображаемых с помощью нескольких представлений, например при определении представления списка и табличного представления для одних и тех же объектов. Дополнительные сведения о создании набора выбора см. в определении наборов выбора.

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

Для указания объектов, используемых представлением списка, можно использовать следующие XML-элементы:

  • Элемент ViewSelectedBy определяет, какие объекты отображаются представлением списка.

  • Элемент SelectionSetName указывает набор объектов, которые могут отображаться представлением. Для представления необходимо указать по крайней мере один набор выбора или тип, но можно указать максимальное количество элементов.

В следующем примере показано, как определить объекты, отображаемые определенным определением представления таблицы с помощью элемента EntrySelectedBy. С помощью этого элемента можно указать имя типа .NET объекта, набор выбора объектов или условие выбора, указывающее, когда используется определение. Дополнительные сведения о создании условий выбора см. в определении условий отображения данных.

Примечание.

При создании нескольких определений представления таблицы нельзя указать разные заголовки столбцов. Можно указать только то, что отображается в строках таблицы, например то, какие объекты отображаются.

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

Для указания объектов, используемых определенным определением представления списка, можно использовать следующие XML-элементы:

  • Элемент EntrySelectedBy определяет, какие объекты отображаются определением.

  • Элемент TypeName указывает объект .NET, отображаемый определением. При использовании этого элемента требуется полное имя типа .NET. Для определения необходимо указать по крайней мере один тип, набор выбора или условие выбора, но можно указать максимальное количество элементов.

  • Элемент selectionSetName (не показан) задает набор объектов, которые можно отобразить с помощью этого определения. Для определения необходимо указать по крайней мере один тип, набор выбора или условие выбора, но можно указать максимальное количество элементов.

  • Элемент SelectionCondition (не показан) указывает условие, которое должно существовать для использования этого определения. Для определения необходимо указать по крайней мере один тип, набор выбора или условие выбора, но можно указать максимальное количество элементов. Дополнительные сведения об определении условий выбора см. в разделе Определение условий для отображенияданных.

Использование строк форматирования

Строки форматирования можно добавить в представление для дальнейшего определения способа отображения данных. В следующем примере показано, как определить строку форматирования для значения свойства StartTime.

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

Для указания шаблона формата можно использовать следующие XML-элементы:

  • Элемент TableColumnItem определяет свойство или скрипт, значение которого отображается в столбце строки. Элемент TableColumnItem требуется для каждого столбца строки. Первая запись отображается в первом столбце, второй записи во втором столбце и т. д.

  • Элемент PropertyName указывает свойство, значение которого отображается в строке. Необходимо указать свойство или скрипт, но нельзя указать оба.

  • Элемент formatString указывает шаблон формата, определяющий отображение значения свойства или скрипта.

В следующем примере вызывается метод ToString для форматирования значения скрипта. Скрипты могут вызывать любой метод объекта. Таким образом, если объект имеет метод, например ToString, который имеет параметры форматирования, скрипт может вызвать этот метод для форматирования выходного значения скрипта.

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

Для вызова метода ToString можно использовать следующий XML-элемент:

  • Элемент TableColumnItem определяет свойство или скрипт, значение которого отображается в столбце строки. Элемент TableColumnItem требуется для каждого столбца строки. Первая запись отображается в первом столбце, второй записи во втором столбце и т. д.

  • Элемент ScriptBlock указывает сценарий, значение которого отображается в строке. Необходимо указать сценарий или свойство, но нельзя указать оба.

См. также

Создание файла форматирования PowerShell