Quiero escribir una directiva personalizada para ui-grid con diferentes columnas de entrada

Este es mi controlador

$scope.usersList = {};

$scope.usersList = {
    paginationPageSizes: [10,15, 20],
    paginationPageSize: 10,
    columnDefs: [
        { name: 'userId', cellTemplate: '<div class="ui-grid-cell-contents"><a ui-sref="appSetting.userSelected({userId: row.entity.userId})">{{ row.entity.userId }}</a></div>' },
        { name: 'firstName' },
        { name: 'lastName' },
        { name: 'emailId' },
        {
            name: 'action',
            cellTemplate: '<div>' +
                    '  <button  ng-click="grid.appScope.sampledetails()">Delete</button>' +
                    '</div>',
            enableSorting: false,
            enableColumnMenu: false
        }
    ]
};

y este es mi .cshtml

<div id="grid1" ui-grid="gridOptions" class="grid"></div>

Quiero escribir esto de tal manera que deba usarse en otros .cshmtls, pero columnDefs varía según el nombre de columna de la tabla. ¿Cómo debo escribir de tal manera que este usuario deba dar las columnasDefs en directiva junto con la paginación?

Respuestas a la pregunta(1)

Su respuesta a la pregunta