CSDL em dùng là mySQL
Phần đổ dữ liệu từ database vào tableView, nếu như chỉ đổ 1 bảng từ csdl vào tableview thì không có gì. Nhưng em đang muốn kết 2 hoặc 3 bảng trong csdl lại rồi đổ vào 1 tableview thì lại gặp rất nhiều khó khăn.
Vì mỗi lần đổ dữ liệu từ database vào tableview thì phải tạo 1 class tương ứng 1 bảng trong csdl và khai báo một Observablelist < tên class> mà cái Observablelist này chỉ được định nghĩa 1 class. Vậy khi em kết 2 bảng trong csdl nó đâu còn là cái class đó, em đang bí chỗ này… Mong các bác giúp em , nếu có control khác hỗ trợ tốt hơn thì cũng được
Javafx đổ dữ liệu vào TableView khi kết 2 bảng trong cơ sở dữ liệu
Chào bạn,
Nếu bạn kết dữ liệu từ nhiều bảng bạn chỉ việc tạo ra object chứa tất cả thuộc tính từ các bảng mà bạn muốn lấy. Sau đó đổ vào TableView là được.
Bạn có thể tham khảo ví dụ thêm xóa sửa TableView JAVAFX
Nếu bạn gặp phải vấn đề gì có thể liện hệ mình.
Chúc bạn thành công!
Cách của bác em đã test và chạy ok, mà nó có cách nào như thằng winform C# ấy, return về 1 datatable xong đổ vào trực tiếp vào table luôn ấy??
Khi bạn query xong trả về ResultSet
ObservableList add rs vào
Không biết có đúng ý bạn nói không?
à không bác ơi, cái em nói là bên C# winform, còn cái ObservableList add rs vào thì em đang dùng, xài ok, tuy hơi khó khăn, phải tạo 1 object mỗi lần kết bảng
Bạn thử cách này chưa ObservableList <'ObservableList '> không cần phải tạo đối tượng khi kết bảng.
em không làm được bác ơi, nếu không có object, thế lúc bác add trực tiếp ResultSet như thế nào?
private ObservableList< ObservableList > data = FXCollections.observableArrayList();
private TableView tableview;
//add column
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
final int j = i;
TableColumn col = new TableColumn(rs.getMetaData().getColumnName(i + 1));
col.setCellValueFactory(new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
return new SimpleStringProperty(param.getValue().get(j).toString());
}
});
tableview.getColumns().addAll(col);
}
//add row
while (rs.next()) {
ObservableList<String> row = FXCollections.observableArrayList();
int columnCount = rs.getMetaData().getColumnCount();
for (int i = 1; i <= columnCount; i++) {
row.add(rs.getString(i));
}
data.add(row);
}
tableview.setItems(data);
Bạn thử xem sao?
Nó báo lỗi dòng này .NullPointerException
à thôi, em fix đc bug rồi, h chạy ngon lành trơn tru hết rồi, cám ơn bác nhiều nhé