Rumah  >  Soal Jawab  >  teks badan

Isih lajur PrimeVue DataTable mengikut tarikh/masa

Saya mempunyai Jadual Data PrimeVue (https://primefaces.org/primevue/datatable) yang disusun seperti berikut:

<DataTable
  :rows = "5"
  :value = "apiItems"
>
  <Column
    v-for="data in columns"
    :field="data.field"
    :header="data.header"
    :key="data.field"
    :sortable="true"
    />
</DataTable>

di mana jadual diisi dengan data yang diterima daripada panggilan API, dengan reka letak medan disenaraikan di bawah:

const columns = [
  { field: 'initialDate', header: 'Initial Date'},
  { field: 'finishDate', header: 'Finish Date'}
];

Data yang diambil daripada API adalah dalam bentuk komponen JS Date() dan dipaparkan seperti berikut: kedua-dua initialDate dan finishDate ialah "08/01/2022 08:33:32"

Bagaimana saya boleh mengisih lajur mengikut tarikh dan cap masa dalam tertib menaik atau menurun, dan sekarang, mengisih lajur hanyalah mengenai menyusun semula nilai berdasarkan nombor pertama yang tersedia (yang kebetulan saya memerlukannya); bukan sahaja sesuai dengan bulan yang betul, tetapi Susun mengikut masa.

Sebarang bantuan adalah dihargai, terima kasih.

P粉985686557P粉985686557331 hari yang lalu540

membalas semua(1)saya akan balas

  • P粉426906369

    P粉4269063692023-11-23 00:02:03

    Kandungan yang anda terima daripada API tidak boleh Date() 对象,但可能是 string. Jadi jika anda mengisih mengikut lajur ini, baris akan diisih secara leksikografi, bukan mengikut kronologi.

    Untuk mengelakkan ini, anda harus menukar data daripada API kepada Date objek. Isih mengikut kronologi adalah sangat mudah jika anda menukarnya kepada cap masa:

    for (item of apiItems) {
      item.initialDateObj = new Date(item.initialDate)
      item.initialDateTimestamp = item.intialDateTimeObj.getTime()
    }
    

    Anda kemudian boleh menentukannya sebagai medan untuk mengisih lajur mengikut:

    const columns = [
      { field: 'initialDate', sortField: 'initialDateTimestamp', header: 'Initial Date'},
      { field: 'finishDate', sortField: 'finishDateTimestamp', header: 'Finish Date'}
    ];
    

    balas
    0
  • Batalbalas