Я пытаюсь заполнить таблицу в моем GUI данными из базы данных.
Вот пример базы данных:
Team
---------------------------------------------------------
| id | name | city | coach |
---------------------------------------------------------
| 1 | Atlanta Hawks | Atlanta | Lloyd Pierce |
| 2 | Boston Celtics| Boston | Brad Stevens |
| 3 | Chicago Bulls | Chicago | Jim Boylen |
| 4 | Brooklyn Nets | New-York | Jacque Vaughn|
Tournament
-----------------------------------------------------------------------
| id | name | city | prise | year |
-----------------------------------------------------------------------
| 1 | FirstCup | Atlanta | 100000 | 2018 |
| 2 | SecondCup | Boston | 200000 | 2019 |
| 3 | ThirdCup | Chicago | 300000 | 2017 |
| 4 | AnotherCup | New-York | 400000 | 2020 |
А вот мой GUI с некоторыми фиктивными данными на вкладках:
#lang racket
(require
racket/gui/base
racket/class
racket/list)
(require db)
(define pgc
(postgresql-connect #:user "postgres"
#:database "bascketball"
#:password "root"))
(define Team-Table #f)
(define Tournament-Table #f)
(define Team-Data #f)
(define Tournament-Data #f)
(define Basketball-App #f)
(define Main-Frame #f)
(define Group-Box #f)
(define Horizontal-Pane-Menu #f)
(define Tab-Panel #f)
(define Team-Tab #f)
(define Tournament-Tab #f)
(define (Basketball-App-init
(Main-Frame-width 800)
(Main-Frame-height 600))
(set! Main-Frame
(new
frame%
(parent Basketball-App)
(label "Basketball App")
(width Main-Frame-width)
(height Main-Frame-height)))
(set! Group-Box
(new
group-box-panel%
(parent Main-Frame)
(label "")
(alignment (list 'right 'bottom))))
(set! Horizontal-Pane-Menu
(new
horizontal-pane%
(parent Group-Box)
(stretchable-width #f)
(stretchable-height #f)))
(set! Tab-Panel
(new
(class tab-panel%
(super-new)
(define child-panels '())
(define/public
(add-child-panel p label)
(set! child-panels (append child-panels (list p)))
(send this append label)
(when (> (length child-panels) 1) (send this delete-child p)))
(define/public
(active-child n)
(send this change-children
(lambda (children) (list (list-ref child-panels n))))))
(parent Group-Box)
(choices (list))
(callback (λ (tp e) (send tp active-child (send tp get-selection))))
(stretchable-width #t)
(stretchable-height #t)))
(set! Team-Tab
(new
(class vertical-panel%
(init parent)
(init-field label)
(super-new (parent parent))
(send parent add-child-panel this label))
(parent Tab-Panel)
(label "Team")
(alignment (list 'left 'center))))
(set! Team-Table (new list-box%
[parent Team-Tab]
[choices (list )]
[label ""]
[style (list 'single 'column-headers 'variable-columns)]
[columns (list "Id" "Name" "City" "Coach")]))
#: Dummy data
(set! Team-Data (list (list "TeamTest" "TeamTest" "TeamTest")
(list "TeamTest" "TeamTest" "TeamTest")
(list "TeamTest" "TeamTest" "TeamTest")
(list "TeamTest" "TeamTest" "TeamTest")))
(send Team-Table set (list-ref Team-Data 0) (list-ref Team-Data 1) (list-ref Team-Data 2) (list-ref Team-Data 3))
(set! Tournament-Tab
(new
(class vertical-panel%
(init parent)
(init-field label)
(super-new (parent parent))
(send parent add-child-panel this label))
(parent Tab-Panel)
(label "Tournament")
(alignment (list 'left 'center))))
(set! Tournament-Table (new list-box%
[parent Tournament-Tab]
[choices (list )]
[label ""]
[style (list 'single 'column-headers 'variable-columns)]
[columns (list "Id" "Name" "City" "Prise" "Year")]))
#: Dummy data
(set! Tournament-Data (list (list "TournamentTest" "TournamentTest" "TournamentTest")
(list "TournamentTest" "TournamentTest" "TournamentTest")
(list "TournamentTest" "TournamentTest" "TournamentTest")
(list "TournamentTest" "TournamentTest" "TournamentTest")
(list "TournamentTest" "TournamentTest" "TournamentTest")))
(send Tournament-Table set (list-ref Tournament-Data 0) (list-ref Tournament-Data 1) (list-ref Tournament-Data 2) (list-ref Tournament-Data 3) (list-ref Tournament-Data 4))
(send Main-Frame show #t))
(module+ main (Basketball-App-init))
Поэтому я хочу загрузить данные из базы данных, когда Я переключаюсь на вкладку и заполняю таблицу загруженными данными.
У меня есть две проблемы с этим:
Первый - Как я должен знать, когда пользователь переключает вкладку и что это за вкладка ( другими словами, куда я должен поместить свой запрос SQL, чтобы использовать его только при переключении вкладки).
Второй - когда я использую какой-то из этих запросов:
(query-rows pgc "select * from team")
Я получаю только строку, и я не знаю, как поместить эту строку в мою таблицу. Я должен разделить эту строку и поместить каждый элемент в ячейку таблицы.
Итак, что вы посоветуете в этом проекте? ![enter image description here](https://i.stack.imgur.com/w2Gg2.png)