On
my previous post 
On Filter Model
self.sortBy
= ko.observable('Id');//Default sort Column
self.sortAscending
= ko.observable(false);
self.iconType =
ko.observable('glyphicon
glyphicon-chevron-down'); //
Icon to appear near Column
No Changes to Adarsh Log Model or Adarsh Log list Model
Knockout.js View Model for Adarsh Log Changes
Add the sortTable  method to it
self.sortTable
= function
(viewModel, e) {
            var columClicked = $(e.target).attr("data-column")
            var sortAscending = (self.filter().sortAscending() === true) ? false : true;
           
self.filter().sortAscending(sortAscending);
            self.filter().sortBy(columClicked);
            datacontext.getAllPost(self.adarshLogListModel,
config.adarshLogUrl, model.adarshLogListModel, self.filter).always(function () {
                var list = [];
                if (self.filter().currentPageIndex() <= 0) {
                    self.filter().enablePrev(false);
                }
                self.adarshLogListModel().adarshLogList().forEach(function (item) {
                    var newRecord = new model.adarshLog();
                    ko.mapping.fromJS(item, {},
newRecord); 
                    list.push(newRecord);
                });
                self.adarshLogs(list);
                //
var newFilter = model.filter;
                ko.mapping.fromJS(self.adarshLogListModel().filterModel(),
{}, self.filter());
                //(newFilter);
                self.individualPageList(self.adarshLogListModel().filterModel().individualPageList());
                if (self.filter().currentPageIndex() <= 1) {
                    self.filter().enablePrev(false);
                }
                if (self.filter().currentPageIndex() >=
self.filter().totalPageCount()) {
                    self.filter().enableNext(false);
                }
                self.isBusy(false);
               
self.filter().iconType((sortAscending === false) ? "glyphicon
glyphicon-chevron-down" : "glyphicon glyphicon-chevron-up");
            });
        }
Filter.CS C#Model Changes
Add Following
Properties
  public string SortBy { get; set; }
  public bool SortAscending { get; set; }
No Changes to Get All WebApi Controller Method
GetAll Repository Change
Before applying the
pagination, add the sorting
switch (filter.SortBy)
                    {
                        case "Id":
                            if(filter.SortAscending)
                                adarshLogList =
adarshLogList.OrderBy(a => a.Id);
                            else
                                adarshLogList =
adarshLogList.OrderByDescending(a => a.Id);
                            break;
                        case "Name":
                            if (filter.SortAscending)
                                adarshLogList = adarshLogList.OrderBy(a =>
a.Name);
                            else
                                adarshLogList =
adarshLogList.OrderByDescending(a => a.Name);
                            break;
                    }
Changes in View List View
<table class="table
table-striped" id="tbUsers">
    <thead>
        <tr data-bind="click:
$root.sortTable" class="pointerControl">
            <th data-column="Id">
                Id
                <span data-bind="attr: { class:
sortBy() == 'Id' ? 'isVisible' : 'isHidden' }">
                    <i data-bind="attr: { class: iconType() }"></i>
                </span>
            </th>
            <th data-column="Name">Name
                <span data-bind="attr: { class:
sortBy() == 'Name' ? 'isVisible' : 'isHidden' }">
                    <i data-bind="attr: { class: iconType() }"></i>
                </span>
            </th>
            <th class="col-sm-1"></th>
        </tr>
    </thead>
    <tbody data-bind="foreach: adarshLogs">
        <tr>
            <td data-bind="text: id"></td>
            <td data-bind="text: name"></td>
            <td class="col-sm-1">
                <a data-bind="attr: { href:
'@Url.Action("Edit", "AdarshLog")' + '/' + Id () }" title="View"><span class="glyphicon glyphicon-pencil"></span></a>
            </td>
        </tr>
    </tbody>
</table>
Comments
Post a Comment