2017-12-18 7 views
1

Ich verwende Free jqGrid 4.15.0, habe ich drei Checkbox-Spalten mit drei Bools gefüllt. Mit der Filtersymbolleiste funktioniert die Option "Alle", die Option "Wahr" funktioniert, aber die Auswahl "Falsch" stimmt mit nichts überein. Ich habe versucht, die Bools in ints (0, 1) umzuwandeln und die Suchoptionen entsprechend zu setzen, aber bis ich die bools/ints in Strings ("true", "false") umgewandelt und auf die Strings gefiltert habe, konnte ich niemals "False" bekommen "Wahl im Filter zu arbeiten.Verwenden von Free jqGrid 4.15, kann Kontrollkästchen nicht auf falsch filtern

Die Checkboxen füllen sich erfolgreich, es ist nur die Filterung, die nicht funktioniert.

Dieser Bildschirm funktionierte gut mit einer früheren Version von jqGrid (4.5.2).

Hat jemand irgendwelche Ideen, was das Problem ist? Lassen Sie es mich wissen, wenn Sie noch etwas sehen müssen.

Meine Klasse, die JSON'd ist und an das Netz geliefert:

public class DelForDetails 
{ 
    public long ScheduleId { get; set; } 
    public DateTime? ShipmentDate { get; set; } 
    public string PurchaseOrderNumber { get; set; } 
    public string ProductNumber { get; set; } 
    public string ScheduleIdentifier { get; set; } 
    public Decimal? ShipmentQuantity { get; set; } 
    public string CommitmentLevel { get; set; } 
    public string ConsumerName { get; set; } 
    public string ShipToFacilityNumber { get; set; } 
    public bool Shipped { get; set; } 
    public bool ExportFlag { get; set; } 
    public bool MissingDateFlag { get; set; } 
    public string StatusForSchedule { get; set; } 
} 

Das Raster:

$('#scheduleGrid').jqGrid({ 
    url: url, 
    datatype: 'json', 
    mtype: 'GET', 
    colModel: [ 
     { name: 'ScheduleId', label: $('#ScheduleIdHeaderText').text(), width: 100, hidden: true, editable: true }, 
     { 
      name: 'ShipmentDate', label: $('#ShipmentDate').text(), width: 100, align: 'center', editable: true, 
      formatter: stdDateFormatter, stype: 'text' 
     }, 
     { name: 'PurchaseOrderNumber', label: $('#PurchaseOrderNumber').text(), width: 150, align: 'left', editable: true }, 
     { name: 'ProductNumber', label: $('#ProductNumber').text(), width: 100, align: 'left', editable: false }, 
     { name: 'ScheduleIdentifier', label: $('#ScheduleIdentifierHeaderText').text(), width: 150, align: 'right', hidden: false }, 
     { 
      name: 'ShipmentQuantity', label: $('#ShipmentQuantity').text(), width: 80, align: 'center', hidden: false, formatter: 'number', 
      formatoptions: { decimalPlaces: 4, thousandsSeparator: '' } 
     }, 
     { name: 'CommitmentLevel', label: $('#CommittmentLevelHeaderText').text(), width: 80, align: 'left', hidden: false }, 
     { name: 'ConsumerName', label: $('#CustomerName').text(), width: 150, align: 'left', hidden: false }, 
     { name: 'ShipToFacilityNumber', label: $('#ShipToCode').text(), width: 100, align: 'center', hidden: false }, 
     { 
      name: 'Shipped', label: $('#ShippedHeaderText').text(), width: 80, align: 'center', hidden: false, formatter: 'checkbox', 
      stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;true:True;false:False' } 
     }, 
     { 
      name: 'ExportFlag', label: $('#ExportFlagHeaderText').text(), width: 80, align: 'center', hidden: false, formatter: 'checkbox', 
      stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;true:True;false:False' } 
     }, 
     { 
      name: 'MissingDateFlag', label: $('#MissingDateFlagHeaderText').text(), width: 80, align: 'center', hidden: false, formatter: 'checkbox', 
      stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;true:True;false:False' } 
     } 
    ], 
    jsonReader: { 
     repeatitems: false, 
     id: 'ScheduleId' 
    }, 
    pager: '#schedulePager', 
    altRows: true, 
    altclass: 'harmony-schedule-grid-altrow-class', 
    ignoreCase: true, 
    multiselect: true, 
    cellEdit: false, 
    rowNum: 15, 
    rowList: [15, 30, 50], 
    loadonce: true, 
    loadui: 'disable', 
    sortable: true, 
    sortname: 'ShipmentDate', 
    sortorder: 'asc', 
    viewrecords: true, 
    gridview: true, 
    autoencode: true, 
    height: 'auto', 
    autowidth: true, 
    subGrid: true, 
    loadComplete: function() { 
     $('#LoadingPanel').hide(); 
     $('td[aria-describedby="scheduleGrid_subgrid"]').addClass('harmony-schedule-background-color'); 
     $('td[aria-describedby="scheduleGrid_cb"]').addClass('harmony-schedule-background-color'); 
    }, 
    subGridRowExpanded: function (subgrid_id, row_id) { 
     ... 
    } 
}) 
.navGrid('#schedulePager', { del: false, add: false, edit: false, search: false }) 
.navButtonAdd('#schedulePager', { } }) 
.filterToolbar({ stringResult: true, searchOnEnter: false, autosearchDelay: 1000, defaultSearch: 'cn' }); 

View of checkboxes

Antwort

0

Wenn ich das Problem richtig verstanden habe, dann sollten Sie hinzufügen

sorttype: "boolean" 

Eigenschaft in der Spalte, welche Daten als Boolean interpretiert werden sollen. Es sollte dein Problem beheben.

Alternativ können Sie

stype: 'select', 
searchoptions: { 
    sopt: ['eq', 'ne'], 
    value: ':All;true:True;false:False' 
} 

zu

sorttype: "boolean", 
stype: "checkbox", 
searchoptions: { 
    sopt: ["eq"], 
    value: "true:false" 
} 

stype: "checkbox" zu verwenden, anstatt stype: "select" zu ändern berücksichtigen. Sie können die Kurzform der Spaltendeklaration verwenden: template: "booleanCheckbox". Es erlaubt die Definition von Spalten Shipped und ExportFlag von

{ 
    name: 'Shipped', label: $('#ShippedHeaderText').text(), width: 80, align: 'center', hidden: false, formatter: 'checkbox', 
    stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;true:True;false:False' } 
}, 
{ 
    name: 'ExportFlag', label: $('#ExportFlagHeaderText').text(), width: 80, align: 'center', hidden: false, formatter: 'checkbox', 
    stype: 'select', searchoptions: { sopt: ['eq', 'ne'], value: ':All;true:True;false:False' } 
} 

zu

{ 
    name: 'Shipped', label: $('#ShippedHeaderText').text(), width: 80, 
    template: "booleanCheckbox" 
}, 
{ 
    name: 'ExportFlag', label: $('#ExportFlagHeaderText').text(), width: 80, 
    template: "booleanCheckbox" 
} 

Ich persönlich meist hinzufügen firstsortorder: "desc" Eigenschaft template: "booleanCheckbox" zu vereinfachen für true auf dem ersten Klick auf der Baum-Zustand Checkbox suchen erstellt von stype: "checkbox".

+0

Danke Oleg. Ich hatte gestern die Drei-Status-Checkbox in der Symbolleiste ausprobiert, hatte aber immer noch das Problem. Jetzt, wo ich "sorttype: boolean" hinzugefügt habe, ist alles in Ordnung. Ich hatte das in keinem der anderen Beispiele gesehen. Vielleicht war es dort, aber ich habe es nicht gesehen. Nochmals vielen Dank. –

+0

@GarlandDuvall: Gern geschehen! Ich empfehle Ihnen, die Demos https://jsfiddle.net/OlegKi/su7ebs65/ und https://jsfiddle.net/OlegKi/yvbt6w54/ von [README4.14.1.md] (https: // github .com/free-jqgrid/jqGrid/blob/master/README4.14.1.md # neue-main-features-implementiert-in-der-version-4141-verglichen-mit-4140) und [README4.14.0.md] (https://github.com/free-jqgrid/jqGrid/blob/master/README4.14.0.md#new-main-features-implemented-in-the-version-4140-compared-with-4136). Die Demos zeigen die Verwendung von 'template:" booleanCheckbox "', 'generateValue: true',' generateDatalist: true' und einige mehr ... – Oleg

Verwandte Themen