Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

SelectItem empty rows

$
0
0
I am having some problems with a selectItem:

EntryPoint:
Code:

public class TestingModule implements EntryPoint {

        ListGrid lg = new ListGrid();

        public void onModuleLoad() {

                VLayout vlayout = new VLayout();
                IButton button = new IButton("Open window");
                button.addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent event) {
                                MyWindow w = new MyWindow();
                                w.show();
                        }
                });
                vlayout.addMember(button);
                vlayout.draw();
        }

}

MyWindow:
Code:

public class MyWindow extends Window {

        private SelectItem textFragmenteSelectItem;

        private final TextItem nameItem;

        private final DynamicForm dfEdit;

        public MyWindow() {
                setWidth(1020);
                setHeight(720);
                setAutoCenter(true);
                setIsModal(true);
                setShowModalMask(true);

                VLayout vlayout = new VLayout(15);
                vlayout.setPadding(20);

                DynamicForm df = new DynamicForm();
                df.setColWidths(150, "*");
                textFragmenteSelectItem = new SelectItem();
                textFragmenteSelectItem.setTitle("current records");
                textFragmenteSelectItem.setOptionDataSource(DataSource.get("table"));
                textFragmenteSelectItem.setValueField("f_id");
                textFragmenteSelectItem.setDisplayField("f_name");
                textFragmenteSelectItem.setSortField("f_name");
                textFragmenteSelectItem.setAutoFetchData(true);
                textFragmenteSelectItem.setPickListWidth(720);
                textFragmenteSelectItem.setWidth(720);
                Criterion c = new Criterion("f_user", OperatorId.EQUALS, "admin");
                textFragmenteSelectItem.setOptionCriteria(c);
                textFragmenteSelectItem.addChangedHandler(new ChangedHandler() {

                        @Override
                        public void onChanged(ChangedEvent event) {
                                String name = textFragmenteSelectItem.getSelectedRecord()
                                                .getAttribute("f_name");
                                nameItem.setValue(name);
                                dfEdit.clearErrors(true);
                        }
                });

                df.setFields(textFragmenteSelectItem);
                vlayout.addMember(df);

                HLayout hlayout = new HLayout(10);

                VLayout editFormLayout = new VLayout(15);

                dfEdit = new DynamicForm();
                dfEdit.setColWidths(80, "*");
                nameItem = new TextItem("Name");
                nameItem.setRequired(true);
                nameItem.setWidth(569);
                dfEdit.setFields(nameItem);
                editFormLayout.addMember(dfEdit);

                hlayout.addMember(editFormLayout);

                vlayout.addMember(hlayout);

                HLayout buttonLayout = new HLayout(15);

                IButton deleteButton = new IButton("Delete record");
                deleteButton.setWidth(150);
                deleteButton.addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent event) {
                                onDeleteButtonClick();
                        }
                });

                IButton saveButton = new IButton("Add");
                saveButton.setWidth(150);
                saveButton.addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent event) {
                                onSaveButtonClick();
                        }
                });

                buttonLayout.setHeight(20);
                buttonLayout.setAlign(Alignment.RIGHT);

                buttonLayout.addMember(deleteButton);
                buttonLayout.addMember(saveButton);

                vlayout.addMember(buttonLayout);

                addItem(vlayout);
        }

        private void onDeleteButtonClick() {
                ListGridRecord selectedFragment = textFragmenteSelectItem
                                .getSelectedRecord();
                if (selectedFragment == null) {
                        SC.say("Select one record");
                        return;
                }
                Record deleteRec = new Record();
                deleteRec.setAttribute("f_id",
                                selectedFragment.getAttributeAsInt("f_id"));
                DataSource.get("table").removeData(deleteRec, new DSCallback() {

                        @Override
                        public void execute(DSResponse dsResponse, Object data,
                                        DSRequest dsRequest) {
                                if (dsResponse.getData().length == 1) {
                                        nameItem.clearValue();
                                        dfEdit.clearErrors(true);
                                        textFragmenteSelectItem.clearValue();

                                }
                        }
                });
        }

        private void onSaveButtonClick() {

                if (!dfEdit.validate()) {
                        return;
                }

                String text = "text";

                Record insertRecord = new Record();
                insertRecord.setAttribute("f_text", text);
                insertRecord.setAttribute("f_name", (String) nameItem.getValue());
                insertRecord.setAttribute("f_user", "admin");
                DataSource.get("table").addData(insertRecord, new DSCallback() {

                        @Override
                        public void execute(DSResponse dsResponse, Object data,
                                        DSRequest dsRequest) {
                                textFragmenteSelectItem.setValue(dsResponse.getData()[0]
                                                .getAttributeAsInt("f_id"));
                        }
                });

        }
}

table.ds.xml:
Code:

<DataSource ID="table" serverType="sql" tableName="t_textfragmente">
        <fields>
                <field name="f_id" type="sequence" primaryKey="true" />
                <field name="f_name" type="text" />
                <field name="f_text" type="text" />
                <field name="f_user" type="text" />
        </fields>

</DataSource>

In order to reproduce the problem, the table t_textfragmente should initially have 4 records with titles "1", "2", "3", and "4". (1.png).

Then, delete them in order "1", "2", "3", and then "4" using the button "Delete Record".
Finally, write "1" in the textfield and push "Add". The record is added and the selectItem is updated (2.png). But why do I see many empty rows? (2.png)

Similar scenarios happen when adding 4 records and immediatly removing the first of them: then I see one empty row in the selectItem.

When I open the window again, I don't see any empty rows, which is the correct behavior. But something is going wrong, see 2.png.
Can you reproduce the problem?

Using SmartGWT Power (v9.1p_2014-09-06/PowerEdition Deployment (built 2014-09-06)) with MSSQL 2014.

Attached Images
File Type: png 1.png (2.8 KB)
File Type: png 2.png (3.2 KB)

Viewing all articles
Browse latest Browse all 4756

Trending Articles