Определете позицията на колоната в Ui grid Angular

ето как дефинирах един от моите колони в Ui grid:

getDeviceTypeList = function () {
        BaseInfoService.getDeviceTypeList().then(function (data) {
            debugger;
            $scope.deviceTypeList = data;

            $scope.gridOptions.columnDefs.push(

                        {
                            headerCellTemplate: '<div>{{"common.DeviceType"|translate}}</div>',
                            cellTemplate: '<div>{{getExternalScopes().deviceTypeFormatter(row.entity.DeviceTypeCode)}}</div>',
                            field: 'DeviceTypeCode',
                            enableCellEdit: true,
                            editType: 'dropdown',
                            editDropdownOptionsArray: $scope.deviceTypeList,
                            editableCellTemplate: 'ui-grid/dropdownEditor',
                            editDropdownIdLabel: 'SubCode',
                            editDropdownValueLabel: 'ParamDesc',
                            editModelField: 'DeviceTypeCode'
                        }
                );

        })
    }  

но друг col дефиниран като:

 $scope.gridOptions = {

        columnDefs: [
       {
       name:"soheil"},
      { name: 'توضیحات', field: 'Command', headerCellTemplate: '<div>{{"common.Comment"|translate}}</div>', editModelField: 'Command' },
      { name: 'تعداد', field: 'NeededDeviceNumber', headerCellTemplate: '<div>{{"common.NeededDeviceNumber"|translate}}</div>', type: 'number', editModelField: 'NeededDeviceNumber' },

      //{ name: 'نوع وسایل', field: 'DeviceType', headerCellTemplate: '<div>{{"common.DeviceType"|translate}}</div>', cellTemplate: '<select ng-model="neededDiviceViewModel.templateCode" ng-options="item.SubCode as item.ParamDesc for item in dastourKarViewModelList"><option value="" style="display:none" selected="selected">انتخاب</option></select>' }
        ],
    }  

как мога да дефинирам потребителска позиция за колона? Сега е като:
1 3 5 2 4

и това не е, което искам, като: 1 2 3 4

Някаква идея ?

Благодаря


person Sadeghbayan    schedule 11.05.2015    source източник
comment
Можете ли да бъдете по-ясни какви позиции за колони искате? Освен това динамично ли добавяте нови колони към мрежата?   -  person kachhalimbu    schedule 11.05.2015
comment
приемете, че колоната трябва да е така: col1 col2 dynamic-col col3, но сега е като: dynamic-col col1 col2 col 3   -  person Sadeghbayan    schedule 11.05.2015


Отговори (2)


Използвайте функцията splice, за да вмъкнете нови дефиниции на колони на правилното място

$scope.columns.splice(1, 0, { field: 'company', enableSorting: false });

Кодът по-горе добавя нова колона на втората позиция. Вижте примера от урока за uioo-grid

АКТУАЛИЗАЦИЯ: За това изискване "приемете, че колоната трябва да е така: col1 col2 dynamic-col col3, но сега е като: dynamic-col col1 col2 col 3" трябва да използвате следния код

$scope.gridOptions.columnDefs.splice(2, 0, { headerCellTemplate: '<div>{{"common.DeviceType"|translate}}</div>',
    cellTemplate: '<div>{{getExternalScopes().deviceTypeFormatter(row.entity.DeviceTypeCode)}}</div>',
    field: 'DeviceTypeCode',
    enableCellEdit: true,
    editType: 'dropdown',
    editDropdownOptionsArray: $scope.deviceTypeList,
    editableCellTemplate: 'ui-grid/dropdownEditor',
    editDropdownIdLabel: 'SubCode',
    editDropdownValueLabel: 'ParamDesc',
    editModelField: 'DeviceTypeCode'
});
person kachhalimbu    schedule 11.05.2015
comment
това е добре, но не мога да преместя статична колона? - person Sadeghbayan; 11.05.2015
comment
columDef е просто JS масив. Подредете го както искате и колоните ще се покажат съответно. Не съм сигурен какво друго очаквате. Вие контролирате създаването на реда, в който трябва да се показват колоните. - person kachhalimbu; 11.05.2015

columnDef е масив и трябва просто да натиснете колоните в същата последователност, в която искате да покажете. За динамично натискане на колони трябва да обработвате тези случаи чрез данни и код.

person Subhash Kumar    schedule 11.05.2015
comment
така че искаш да кажеш, че не е възможно? - person Sadeghbayan; 11.05.2015
comment
Да.. просто трябва да зададете масива според вашите изисквания.. Няма друг начин да промените последователността.. - person Subhash Kumar; 11.05.2015
comment
В отговора по-горе, просто промяна на позициите на масива, а не нещо друго.. има много начини в кода, по които можете да промените масива, но няма опция, където можете да зададете показваната последователност.. ако знаете, моля, споделете с мен.. - person Subhash Kumar; 11.05.2015