2015-02-04 1 views
0

Я создал таблицу с несколькими столбцами, получающими данные из Odata, и я создал другой столбец, который будет иметь только флажок.SAP UI5 - Невозможно выбрать более одного Флажок в столбце таблицы

Мой код

var oTable = new sap.ui.table.Table("Brand",{ 
         title: "Brand List", 
        // visibleRowCount: 10, 
         //firstVisibleRow: 3, 
         selectionMode: sap.ui.table.SelectionMode.None, 
        navigationMode: sap.ui.table.NavigationMode.Paginator, 
         fixedColumnCount: 10, 
         width:"700px" 

        }); 

    oTable.addColumn(new sap.ui.table.Column({ 
        // visible: false, 
         label: new sap.ui.commons.Label({text: "Country"}), 
       template: new sap.ui.commons.TextView().bindProperty("text", "COUNTRY_ID"), 
         sortProperty: "COUNTRY_ID", 
         filterProperty: "COUNTRY_ID", 
         flexible : false, 
         width:"1px" 
        })); 

        //Define the columns and the control templates to be used 
        oTable.addColumn(new sap.ui.table.Column({ 
         label: new sap.ui.commons.Label({text: "Brand"}), 
         template: new sap.ui.commons.TextView().bindProperty("text", "BRAND"), 
         sortProperty: "CUSTOMER", 
         filterProperty: "CUSTOMER", 
         width:"250px" 
        })); 

oTable.addColumn(new sap.ui.table.Column({ 
         label: new sap.ui.commons.Label({text: "2013",textAlign:"Center"}), 
         template: new sap.ui.commons.CheckBox().bindProperty("checked","checked"), 
         sortProperty: "checked", 
         filterProperty: "checked", 
         width: "100px", 
         hAlign: "Center" 
        })); 

Он отлично работает, когда длина таблицы 10 (определено в операторе создания таблицы). Но если мой брендовый список более 10 (иногда это может быть больше 100), все равно нет. из флажков создается 10. так что в таблице, если перейти на следующую страницу (режим paginator), флажки все те же.

Так что, если я выбираю бренд на первой странице и выбираю бренд на третьей странице, флажок остается таким же. Он не создает флажки, кроме первой страницы.

Пожалуйста, помогите мне по этому вопросу.

Благодаря Sathish

ответ

0

Покушение 2. На этот раз, я постараюсь ответить на этот вопрос. Sathish, кажется, что ваша модель не учитывает свойство checkbox. Ваш OData служба возвращают данные к вам (с помощью JSON обозначения для простоты), как это:

data : [{ 
     "COUNTRY_ID" : "USA", 
     "BRAND" : "Nike" 
    },{ 
     "COUNTRY_ID" : "GER", 
     "BRAND" : "Adidas" 
    },{ 
     "COUNTRY_ID" : "ITA", 
     "BRAND" : "Lotto" 
    }] 

Но вы используете возвращаемую модель, как если есть третье свойство в каждом объекте, названный «проверил». Например.

data : [{ 
     "COUNTRY_ID" : "USA", 
     "BRAND" : "Nike", 
     "checked" : false 
    },{ 
     "COUNTRY_ID" : "GER", 
     "BRAND" : "Adidas", 
     "checked" : false 
    },{ 
     "COUNTRY_ID" : "ITA", 
     "BRAND" : "Lotto", 
     "checked" : false 
    }] 

Если это свойство не является частью модели, то вам фактически нечего связывать ваш флажок. Поскольку свойство не существует в модели, столбец флажка не привязан ни к чему. Когда таблица инициализируется до 10 строк, это количество элементов управления флажками, которые вы создали, не более. После того, как вы начнете разбивать страницы, числовые строки никогда не меняются, но разбиение на страницы связывает следующие 10 строк вашего набора данных OData с строками и столбцами таблицы. Поскольку набор данных не содержит свойство «checked» (мое предположение), столбец с перечислением флажков не является отскоком к данным модели, поэтому отмеченные флажки никогда не меняются.

Я предлагаю вам сделать одну из двух вещей: обновите службу OData, чтобы включить это дополнительное свойство (отмечено), и привяжите столбец флажка к этому свойству или два, скопируйте данные модели в новую модель, добавьте свойство 'checked' для каждого объекта в коллекции, а затем привязать таблицу к этой новой модели. В любом случае вам нужно убедиться, что у модели есть свойство, к которому вы можете привязать флажки.

Эта ссылка в редактируемый управления Таблица демонстрирует принципала я имею в виду: Editable Table control В этом примере автор делает таблица редактируется с помощью свойства «редактируемые» в каждом объекте в его коллекции. Это свойство, которое существует для каждой записи в данных модели, привязано к элементу управления TextField во втором столбце таблицы.

template: new sap.ui.commons.TextField({ 
    value: '{lname}', 
    editable: '{edit}' // Binding editable property of text field to 'edit' attribute of Model 
}), 

Вам нужно сделать что-то очень похожее, но для Checkbox, обеспечения модель обладает свойством связывать.

Удачи.

+0

Это должен был быть комментарий, а не ответ. С немного больше rep, [вы сможете оставлять комментарии] (http: // stackoverflow.ком/привилегия/комментарий). До тех пор, пожалуйста, не используйте ответы в качестве обходного пути. –

+0

Ответ переписан - я * думаю * это ответ сейчас. – hagen

Смежные вопросы