dynamic - Knockout JS filter functionality in index.cshtml file -


i'm trying write dynamic code use knockout across pages. i've common.js file has required functionality. filter functionality different per page, i'm writing in index.cshtml file. code i've written filtering, if put in common.js, works fine doesn't filter data if put in index.cshtml file. i've created jsfiddle it, reason it's not showing correctly. link same http://jsfiddle.net/maulikk2000/fgkkx/ . so, question i'm doing wrong here. i'm putting js code here index.cshtml code gets bit unreadable. commented line @ bottom of index.cshtml in jsfiddle ( $.getjson) real code.

function creategrid(gridid, itemobject, pagesize, initializefilterbyitems, dataitems) {      var self = this;      self.gridid = gridid;       self.itemobjectarray = ko.observablearray(ko.utils.arraymap(dataitems, function (data) {         return new itemobject(data);      }));      self.pagesize = ko.observable(pagesize);     self.pageindex = ko.observable(1);     self.prevpageindex = ko.observable(1);      self.selecteditem = ko.observable();     self.itemforediting = ko.observable();        initializefilterbyitems(self.itemobjectarray);       self.stringstartswith = function (item, startswith) {          item = item || "";          if (startswith.length > item.length) return false;         return item.substring(0, startswith.length) === startswith;      };      self.templatetouse = function (item) {          var item1 = self.selecteditem();          var template = item === item1 ? 'edittmpl' : 'itemstmpl';         return template;      };      self.pagedlist = ko.computed(function () {          var size = self.pagesize();         var start = (self.pageindex() - 1) * size;          var itemstoreturn = this.filtereditems ? this.filtereditems : self.itemobjectarray;          //return self.filtereditems.slice(start, start + size);         return itemstoreturn.slice(start, start + size);      });      self.maxpageindex = ko.computed(function () {         return math.ceil(self.itemobjectarray().length / self.pagesize());      });      self.totalitems = ko.computed(function () {         return self.itemobjectarray().length;     });      self.previouspage = function () {         if (self.pageindex() > 1) {             self.pageindex(self.pageindex() - 1);             self.prevpageindex(self.pageindex());         }     };      self.nextpage = function () {         if (self.pageindex() <= self.maxpageindex()) {             self.pageindex(self.pageindex() + 1);             self.prevpageindex(self.pageindex());         }     };      self.firstpage = function () {         self.pageindex(1);         self.prevpageindex(1);     };      self.lastpage = function () {         self.pageindex(self.maxpageindex());         self.prevpageindex(self.maxpageindex());     };      self.pageindex.subscribe(function (item) {          if (item) {              var jumptopage = parseint(item);              if (jumptopage <= self.maxpageindex()) {                 self.pageindex(jumptopage);                 self.prevpageindex(jumptopage);             } else {                  self.pageindex(self.prevpageindex());              }         }      });      self.allpages = ko.computed(function () {          var pages = [];         (var = 1; <= self.maxpageindex(); i++) {             pages.push({                 pagenumber: (i + 1)             });         }         return pages;     });      self.movetopage = function (index) {         self.pageindex(index);     };      self.selectitem = function (item) {         self.selecteditem(item);         self.itemforediting(new itemobject(ko.tojs(item)));      };      self.acceptitem = function (item) {          var validationerror = ko.validation.group(item);         var vlength = validationerror().length;          if (vlength == 0) {              var selected = self.selecteditem(),                 edited = self.itemforediting();              var currentdate = new date();             var datetime = currentdate.getfullyear() + "-" + (currentdate.getmonth() + 1) + "-" + currentdate.getdate() + " " + currentdate.gethours() + ":" + currentdate.getminutes() + ":" + currentdate.getseconds() + "." + currentdate.getmilliseconds();               item.date_last_updated(datetime);             var id = selected.contractorserviceid();              ajaxupdate(updateitemurl + id, ko.tojson(item), function () {                 edited.update(selected);                  self.selecteditem(null);                 self.itemforediting(null);             },              function (errortext) {                 alert(errortext);                 selected.update(edited);             });          } else {          }     };      self.revertitem = function (item) {         var selected = self.selecteditem(),             edited = ko.tojs(self.itemforediting());         selected.update(edited);          self.selecteditem(null);         self.itemforediting(null);     };      self.remove = function (item) {         if (confirm("are sure want delete " + " '" + item.contractorservicedescription() + "'??")) {              var itemid = item.contractorserviceid();              ajaxdelete(deleteitemurl + itemid, function () {                 self.itemobjectarray.remove(item);             },              function (errormessage) {                 alert(errormessage);             });          }      };      self.getall = function () {          self.itemobjectarray.removeall();          $.getjson(readitemurl, function (services) {              $.each(services, function (index, service) {                 self.itemobjectarray.push(new itemobject(service));            });          });     };      self.add = function () {          var data = {};         data.contractorserviceid = "enter new id here";         data.contractorservicedescription = "enter new description here";         var newitem = new itemobject(data);          self.selecteditem(newitem);          $("#contractorservicedialog").dialog({              width: 420,             buttons: [{                 text: 'save',                     "class": 'commonbuttonstyle',                     "autofocus": this,                 click: function () {                     var validationerror = ko.validation.group(self.selecteditem());                     var vlength = validationerror().length;                      if (vlength != 0) {                      } else {                          $(this).dialog("close");                          var item = self.selecteditem();                          ajaxadd(additemurl, ko.tojson(item), function () {                             self.getall();                         },                          function (errortext) {                             alert(errortext);                         });                     }                 }             }, {                 text: "cancel",                     "class": 'commonbuttonstyle',                 click: function () {                     self.itemobjectarray.remove(newitem); // need remove otherwise it'll appear on last page...                     $(this).dialog("close");                 }             }]           });       };  } 


Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -