Domanda

Sto creando un tavolo flessibile in modo dinamico con il seguente codice.

for (int CurrentRow=1;CurrentRow<2;CurrentRow++)
                {
                    Label lblGettingName = new Label("Getting Name...");
                    View.getMainFlex().setWidget(CurrentRow, 0, lblGettingName);

                    Button btnViewDetails = new Button("View Details");
                    View.getMainFlex().setWidget(CurrentRow, 1, btnViewDetails);

                    Label lblGettingBid = new Label("Getting Bid...");
                    View.getMainFlex().setWidget(CurrentRow, 2, lblGettingBid);
                    View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 2, "BackNormalNotBold");

                    Label lblGettingBidDesription = new Label("Getting Bid Desription...");
                    lblGettingBidDesription.setStyleName("BidDesc");
                    View.getMainFlex().setWidget(CurrentRow, 3, lblGettingBidDesription);
                    View.getMainFlex().getCellFormatter().setWidth(CurrentRow, 3, "40");
                    View.getMainFlex().getFlexCellFormatter().setStylePrimaryName(CurrentRow, 3, ".BidDesc");

                    Label lblCalculating = new Label("Calculating..");

                    Label lblCalculatingTime = new Label("Calculating Time...");
                    View.getMainFlex().setWidget(CurrentRow, 4, lblCalculatingTime);
                    View.getMainFlex().getFlexCellFormatter().setStyleName(1,4, "BackNormalNotBold");

                    TextBox textBox = new TextBox();
                    View.getMainFlex().setWidget(CurrentRow+1, 3, textBox);
                    View.getMainFlex().getCellFormatter().setWidth(CurrentRow+1, 3, "40");

                    View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 0, "BackNormalNotBold");
                    View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 1, "BackNormalNotBold");
                    View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow, 2, "BackNormalNotBold");
                    View.getMainFlex().getFlexCellFormatter().setStyleName(CurrentRow+1, 3, "BackNormalNotBold");
                    View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 4, 3);
                    View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 2, 3);
                    View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 1, 3);
                    View.getMainFlex().getFlexCellFormatter().setRowSpan(CurrentRow, 0, 3);
                    View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow+1, 3, 2);
                    View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow, 3, 2);
                    View.getMainFlex().getFlexCellFormatter().setColSpan(CurrentRow-1, 3, 2);

                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 1, HasHorizontalAlignment.ALIGN_CENTER);
                    View.getMainFlex().getCellFormatter().setVerticalAlignment(CurrentRow, 1, HasVerticalAlignment.ALIGN_MIDDLE);
                    View.getMainFlex().getCellFormatter().setVerticalAlignment(CurrentRow, 0, HasVerticalAlignment.ALIGN_MIDDLE);
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 0, HasHorizontalAlignment.ALIGN_CENTER);
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 2, HasHorizontalAlignment.ALIGN_CENTER);
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow+1, 3, HasHorizontalAlignment.ALIGN_CENTER);
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 3, HasHorizontalAlignment.ALIGN_CENTER);

                    Button btnPlaceBid = new Button("Bid!");
                    View.getMainFlex().setWidget(CurrentRow+2, 3, btnPlaceBid);
                    View.getMainFlex().getCellFormatter().setWidth(CurrentRow+2, 3, "20");
                    btnPlaceBid.setSize("66px", "26px");

                    ToggleButton tglbtnAutomate = new ToggleButton("Automate");
                    View.getMainFlex().setWidget(3, 4, tglbtnAutomate);
                    View.getMainFlex().getCellFormatter().setWidth(3, 4, "20");
                    tglbtnAutomate.getDownHoveringFace().setText("TurnOFF");
                    tglbtnAutomate.getUpHoveringFace().setText("TurnON");
                    tglbtnAutomate.getDownDisabledFace().setText("Enable");
                    tglbtnAutomate.setHTML("Auto:OFF");
                    tglbtnAutomate.getUpFace().setHTML("Auto:OFF");
                    tglbtnAutomate.getDownFace().setHTML("Auto:ON");
                    tglbtnAutomate.setSize("54px", "18px");
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow+2, 3, HasHorizontalAlignment.ALIGN_RIGHT);
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow-1, 4, HasHorizontalAlignment.ALIGN_CENTER);
                    View.getMainFlex().getCellFormatter().setHorizontalAlignment(CurrentRow, 4, HasHorizontalAlignment.ALIGN_CENTER);
                }
                FlexTableHelper.fixRowSpan(View.getMainFlex());

Quando il ciclo viene eseguito solo una volta, il layout corretto viene generato ma quando provo a creare più di 1 riga, il layout degerate

È stato utile?

Soluzione

La maggior parte dei problemi che potrebbero con FlexTable sono causati da metodi setRowSpan / setColSpan che può facilmente il caos wreak nel layout. Invece di utilizzare questi metodi è possibile creare widget di composito / Html e il luogo in cellule in modo FlexTable avrà meno quantità di righe / colonne.

Altri suggerimenti

FlexTable utilizza vecchio elemento attributi di td come larghezza, altezza, allineamento ecc Non è ancora adattato per usare i CSS invece anche nella nuova versione. IE11 non fa alcun supporto più a tutti, per esempio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top