Blazor - zmiana kolejności wyświetlanych elementów wprowadzonych manualnie

0

Cześć,
Uczę się blazora i chcę utworzyć własny komponent dla tabeli, w której będzie opcja zmiany kolejności kolumn.
W związku z powyższym zastanawiam się czy jest możliwa zmiana kolejności wyświetlania się componentów-dzieci (Child) w poniższym przykładzie:

Mam prosty component-rodzic (Parent), który zawiera w sobie inne komponenty-dzieci (Child) przykładowo:

<Parent>
   <Child>1</Child>
   <Child>2</Child>
   <Child>3</Child>
   <button @onclick="zmien_kolejnosc">Zmiana kolejnosci</button>
</Parent>

Po naciśnięciu przycisku chciałbym, aby dzieci wyświetliły się np. odwrotnie.
Czy jest to do zrobienia?

Z góry dziękuję za pomoc.

1
@page "/test"
<h3>Test</h3>
<div>
    @foreach (var i in data)
    {
        <div>@i</div>
    }
</div>

<a @onclick="@change">change</a>
@code {
    List<int> data = new List<int> { 1, 2, 3, 4 };

    public void change()
    {
        data.Reverse();
        StateHasChanged();
    }
}
1

mi wyszło prawie to samo co u Jacka.Placka

Child

<p><b><i><u>@ChildNumber</u></i></b></p>
@code {
    [Parameter]
    public int ChildNumber { get; set; } = 0;
}

Parent

@page "/parent"
@inherits Child
<h3>Parent</h3>
@foreach (var i in myList)
{
    <Child ChildNumber=@i></Child>
}
<button @onclick="@sort">Sort</button>
@code {
    List<int> myList = new List<int> { 1, 2, 3, 4,5 };
    private void sort()
    {
        myList.Reverse();
        StateHasChanged();
    }
}
0

Dzięki za odpowiedzi, ale nie do końca o to mi chodziło. Nawet napisałem wcześniej, że chodzi o to aby nie używać tablicy, ale wygląda na to, że później to skasowałem.
Problem jest taki, że do componentu Parent chcę przekazać tablicę obiektów, natomiast w child chcę wstawić odpowiednie pola z każdego z tych obiektów.
W sumie to powinno wyglądać mniej więcej tak:

<Tabela Items="dane">
	<Row Context="Obiekt">
		... //tutaj wstawiać swoje dane z obiektu w pewnej kolejności, i tą kolejność będę chciał później zmienić.
	</Row>
</Tabela>

No i problem jest taki, że jak zrobię w ten sposób to później nie bardzo jestem wstanie ruszyć to co wstawię między <Row> a </Row>

0

No i problem jest taki, że jak zrobię w ten sposób to później nie bardzo jestem wstanie ruszyć to co wstawię między <row> a </row>

No to nie rób tego w ten sposób tylko tak jak napisaliśmy. Jaki masz problem z użyciem tablicy czy listy?

0

@jacek.placek: Taki, że to będzie dużo mnie wygodne i efektywne?
Jak mam wszystkie dane w tablicy obiektów (List<MojObiekt>) to muszę dla każdego obiektu robić tablicę elementów (właściwości) tego obiektu (a obiekt może być różnego typu). Tak więc z jednej tablicy muszę zrobić tablicę tablic List<MojObiekt> => List<List<wlasciwosci>>

0

No ale w jakiś sposób musisz zapisać te kolejność jeśli chcesz ją kontrolować. Musisz gdzieś pamiętać stan tej tabeli i to nie w l8scie obiektów (modelu danych) Tylko w komponentów.
Coś takiego jak @cw napisał.

0

Oki doky, dzięki wszystkim za pomoc ;).

1 użytkowników online, w tym zalogowanych: 0, gości: 1