Ich erstelle eine Webanwendung, die Vaadin Framework verwendet, aber ich bin mit einem Tabellenelement (Filtertabelle) festgefahren. Meine Tabelle hat eine Spalte, die ComboBox-Komponente in jeder Zeile enthält, jetzt funktioniert das Kombinationsfeld in der Tabelle ordnungsgemäß, aber ich kann nicht auf diese Spalte klicken, um den Tabellenwert auszuwählen. Die Zeile kann in der Tabelle ausgewählt werden, indem Sie auf den Zwischenraum klicken Combobox und Spaltenbegrenzung können jedoch nicht durch Anklicken der Combobox selbst ausgewählt werden. Ich suchte viel und fand https://vaadin.com/forum/#!/thread/988648/988647, versucht, Blackboard Addon zu implementieren, war aber nicht erfolgreich. Mein Code ist ungefähr unter.Kann Tabellenzeile nicht auswählen, indem ich auf ui Komponente in einer Spalte der Tabelle in Vaadin klicke
PagedFilterTable<IndexedContainer> filterTable;
`public static PagedFilterTable<IndexedContainer> buildPagedFilterTable()
{
filterTable = new PagedFilterTable<IndexedContainer>();
filterTable.setFilterBarVisible(true);
filterTable.setSelectable(true);
filterTable.setImmediate(true);
filterTable.setMultiSelect(true);
filterTable.setRowHeaderMode(RowHeaderMode.INDEX);
filterTable.setColumnCollapsingAllowed(true);
filterTable.setContainerDataSource(buildContainer());
filterTable.setVisibleColumns((Object[]) new String[] {
"Clear", "Name" });
return filterTable;
}`
static int f=1;
private static Container buildContainer() {
IndexedContainer cont = new IndexedContainer();
cont.addContainerProperty("Clear", Component.class, null);// added combobox component
cont.addContainerProperty("Name", String.class, null);
//populating table with database values (table rows will be = no. of rows in db)
Connection con;
ResultSet rs;
Statement cs;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","CGoracle");
cs=con.createStatement();
co=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = cs.executeQuery("select * from ECS_CURRENT");
while(rs.next())
{
ComboBox select_reason_return=new ComboBox();
select_reason_return.setInputPrompt("Select");
select_reason_return.setVisible(true);
select_reason_return.setNullSelectionAllowed(false);
select_reason_return.setInvalidAllowed(false);
select_reason_return.addItem("1.A/c Closed/Transfered");
select_reason_return.addItem("2.No Such A/c");
select_reason_return.addItem("3.Clear");
select_reason_return.select("3.Clear");
select_reason_return.addListener(new Property.ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
String reason=select_reason_return.getValue().toString();
rowId=FilterTable.getValue();
Notification.show("row id is ="+rowId);
}
});
cont.addItem(f);
cont.getContainerProperty(f, "Clear").setValue(select_reason_return);
cont.getContainerProperty(f, "Name").setValue(rs.getString(10));
f++;
}
}
catch (SQLException | ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return cont;
}
If it helps, I'm posting screenshots, Image 1: if I select anywhere other than the combobox, it is returning row id properly.Image 2: Though I'm selecting an item from combobox, table row is not getting seleced, hence it's not returning me row id. Gibt es eine andere Option als Tafel Add-on? Wenn nein, dann bitte hilf mir das Problem damit zu lösen.
Ich habe Ihre vorgeschlagene Methode in den Code oben implementiert, aber es gibt mir Zeile Id als null zurück, haben Screenshots oben angefügt, um das gleiche zu zeigen. – Ahmey