C#/WPF: Инструментарий DataGrid - Транспонирует строки и столбцы

Да, и большинство серверов приложений соберет элементы соответствия и свяжет их с запятыми, такими что форма как это:


... решил бы к URL (в ПОЛУЧИТЬ случае - POST будет работать тот же путь, хотя) как это:

http://myhost.com/myscript.asp?myHidden=1&myHidden=2&myHidden=3

... и был бы представлен Вам в коде как это: (например, после чего-то как Ответ. Запишите (Запрос. QueryString ("myHidden")):

1, 2, 3

Так для захвата значений Вы только что разделили строку и получаете доступ к ним как к массиву (или независимо от того, что сопоставимо на Вашем предпочтительном языке).

(Должен быть разъяснен: В PHP это немного отличается (как Johnathan указывает, нотация скобки представляет объекты как массив к Вашему коду PHP), но ASP, ASP.NET и CF все представляют значения как разделенный запятыми список. Таким образом да, дублирующееся именование абсолютно допустимо.)

7
задан Joseph jun. Melettukunnel 28 September 2009 в 12:38
поделиться

2 ответа

You can use RowHeaderTemplate like this:

<toolkit:DataGrid>
  <toolkit:DataGrid.RowHeaderTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Item.Titel, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type toolkit:DataGridRow}}}"/>
    </DataTemplate>
  </toolkit:DataGrid.RowHeaderTemplate>
</toolkit:DataGrid>

You will also have to set AutoGenerateColumns to false and create your own columns to avoid the Titel property also being displayed as a column.

Edit

I now understand that you want to transpose the DataGrid. I think the easy but somewhat "hacky" solution is to create a list of "transposed" objects. To do this you would have to know in advance how many objects there are in the original list and then create a new class with as many properties as there are objects.

class TransposedDetailObject {
  public String Column1 { get; set; }
  public String Column2 { get; set; }
  public String Column3 { get; set; }
}

var transposedList new List<TransposedDetailObject> {
  new TransposedDetailObject {
    Column1 = someList[0].Titel,
    Column2 = someList[2].Titel,
    Column3 = someList[3].Titel
  },
  new TransposedDetailObject {
    Column1 = someList[0].Value1,
    Column2 = someList[2].Value1,
    Column3 = someList[3].Value1
  },
  ...
};

A less "hacky" solution is to modify the control template of the DataGrid to swap rows and columns. However, DataGrid is a complex control and it can be a bit overwhelming to modify the control template.

3
ответ дан 6 December 2019 в 21:17
поделиться

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

3
ответ дан 6 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: