2016-03-31 14 views
0

Ich habe Probleme, den richtigen TotalRecords-Wert aus meiner Sammlung bei einer Suche mit Backgrid Client-Side-Filtererweiterung zu bekommen.So erhalten Sie TotalRows von Backgrid-Client-Side-Suche

Insbesondere, wenn ich die Rücktaste auf meiner Tastatur verwenden.

Wenn ich die Rück nicht verwenden, und langsam geben, scheint dies zu funktionieren:

//Search input field - keyup event 
$("input[name='q']").keyup(function() { 

    console.log('searchcontainer input - keyup event'); 
    console.log($(this).val()) 
    console.log($(this).val().length) 

    var key = event.keyCode || event.charCode; 
    if (key == 8) { //'8' == backspace key 
     console.log('backspace was keyed!') 

     //how do I refresh the 'totalRecords' property on the collection? 
    } 

    console.log((_myCollection.state.totalRecords || "0") + " records found.")); 

    $("#lblRecordsFound").text((_myCollection.state.totalRecords || "0") + " records found."); 
}); 

Es ist wie die totalRows scheint überspringt eine Sammlung Update, wenn ein Rückschritt ausgelöst wird (?)?

Wie bekomme ich die aktuellen totalRows, wenn Sie Backspace verwenden? Muss ich die Sammlung zurücksetzen, abrufen oder aktualisieren? Ich bin unsicher. Hilfe?

Ich brauche einfach die totalRows, die derzeit im Raster angezeigt werden, jederzeit.

Antwort

0

Ich endete "Ändern" der Erweiterung backgrid-filter.js.

Ich änderte die Suchfunktion, etwa so:

/** 
    Takes the query from the search box, constructs a matcher with it and 
    loops through collection looking for matches. Reset the given collection 
    when all the matches have been found. 

    If the collection is a PageableCollection, searching will go back to the 
    first page. 
*/ 
search: function() { 
    var matcher = _.bind(this.makeMatcher(this.query()), this); 
    var col = this.collection; 
    if (col.pageableCollection) col.pageableCollection.getFirstPage({ silent: true }); 
    col.reset(this.shadowCollection.filter(matcher), { reindex: false }); 
    var message = " items found."; 
    if (col.pageableCollection.state.totalRecords == 1) { 
     message = " item found."; 
    } 
    $("#lblRecordsFound").text((col.pageableCollection.state.totalRecords || "0") + message); 
}, 

gut funktioniert. Ich verstehe nicht, warum Backgrid keine exposed-Eigenschaft für den einfachen Zugriff auf die aktuellen Gesamtzeilen hat.