2016-05-04 12 views
0

Die folgende Tabelle ist auch das Format meiner ExcelElemente in einem observableArray schieben Der Versuch, nachdem er aus einer Excel-Datei zu lesen, aber nicht alle Daten geschoben wird

<!DOCTYPE html> 

<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta charset="utf-8" /> 
    <title></title> 
</head> 
<body> 
    <button data-bind="click: GetCount">Get Tickets</button> 
    <table> 
     <thead> 
     <tr> 
      <th> 
       #REQ 
      </th> 
      <th> 
       #RITM 
      </th> 
      <th> 
       #TASK 
      </th> 
      <th> 
       Start Date 
      </th> 
      <th> 
       End Date 
      </th> 
      <th> 
       Status 
      </th> 
      <th> 
       Comments 
      </th> 
     </tr> 
      </thead> 

     <tbody data-bind="foreach: AddNewTicket"> 
      <tr> 
       <td data-bind="text: req"></td> 
       <td data-bind="text: ritm"></td> 
       <td data-bind="text: task"></td> 
       <td data-bind="text: sDate"></td> 
       <td data-bind="text: eDate"></td> 
       <td data-bind="text: status"></td> 
       <td data-bind="text: comments"></td> 
      </tr> 
     </tbody> 
    </table> 

    <script src="knockout-3.4.0.js" type="text/javascript"></script> 
    <script src="ViewTicketsJS.js" type="text/javascript"></script> 
</body> 
</html> 

Die JS-Datei Die Datei ist wie folgt:

function AddNewTicketFunc(req, ritm, task, sDate, eDate, status, comments) { 
    var self = this; 
    self.req = req; 
    self.ritm = ritm; 
    self.task = task; 
    self.sDate = sDate; 
    self.eDate = eDate; 
    self.status = status; 
    self.comments = comments; 

} 

function AppViewModel() { 
    var self = this; 
    self.username = ko.observable(); 
    self.REQ = ko.observable();; 
    self.RITM = ko.observable(); 
    self.TASK = ko.observable(); 
    self.user = ko.observable(); 
    self.URL = ko.observable(); 
    self.access = ko.observable(); 
    self.Description = ko.observable(); 



    self.AddNewTicket = ko.observableArray([/* 
     new AddNewTicketFunc("1", "2", "3", "4", "5", "6", "7")*/ 
     ]); 

    self.GetCount = function() { 
     var cn = new ActiveXObject("ADODB.Connection"); 
     var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:/Users/nairas2.dv/Documents/Visual Studio 2012/Projects/TaskList.xlsx;Persist Security Info=False;Extended Properties=Excel 8.0;" 
     cn.Open(strConn); 
     var rs = new ActiveXObject("ADODB.Recordset"); 
     var SQL = "select * from [TicketsTable$]"; 
     rs.Open(SQL, cn); 
     //rs.Open(cn); 
     if (rs.bof) { 
      document.write('No records available for this query'); 
     } 

     if (!rs.bof) { 

      rs.MoveFirst() 
      while (!rs.eof) { 
       var count = rs.fields.count; 
       alert(rs.fields(0).value + rs.fields(1).value + rs.fields(2).value+ rs.fields(3).value+ rs.fields(4).value+ rs.fields(5).value+ rs.fields(6).value); 
       //alert(count); 
       /* for (var i = 0; i != rs.fields.count; ++i) { 
        document.write(rs.fields(i).value + " | "); 
       }*/ 

        //this.AddNewTicket.push(new AddNewTicketFunc(rs.fields(--count).value, rs.fields(--count).value, rs.fields(--count).value, rs.fields(--count).value, rs.fields(--count).value, rs.fields(--count).value, rs.fields(--count).value)); 
       self.AddNewTicket.push(new AddNewTicketFunc(rs.fields(0).value, rs.fields(1).value, rs.fields(2).value, rs.fields(3).value, rs.fields(4).value, rs.fields(5).value, rs.fields(6).value)); 
     //self.AddNewTicket.push(new AddNewTicketFunc("1", "2", "3", "4", "5", "6", "7")); 

       // document.write("<br />"); 
       rs.MoveNext(); 
      } 
     } 
     rs.Close(); 
     cn.Close(); 
    } 
} 

ko.applyBindings(new AppViewModel()); 

auf Debuggen fand ich den Fehler bei der Push-Funktion

Hier ist der Screenshot der Ausgabe: As you can see the remaining fields are blank

+0

Was den Fehler war ... – dmoo

+0

Der Screenshot ..... Die kompletten Daten nicht aufgefüllt ist ...... Das ist der Fehler ...... Die Excel-Datei hat etwa 200 Zeilen ..... und nicht einmal eine einzige Zeile wird komplett bevölkert. –

Antwort

0

Problem ist in Ihrer definierten Funktion hinzufügen return self; in Ihren definierten Funktionen.

function AddNewTicketFunc(req, ritm, task, sDate, eDate, status, comments) { 
    var self = this; 

    self.req = req; 
    self.ritm = ritm; 
    self.task = task; 
    self.sDate = sDate; 
    self.eDate = eDate; 
    self.status = status; 
    self.comments = comments; 

    return self; 
}