2016-04-06 32 views
3

Kullanıcı, filtrelemek istediği metni vurguladığında arama sağladığım bir kılavuza sahibim. Seçili arama filtresini, ücretsiz jqGrid'de onCellSelect'e nasıl alabilirim?

onCellSelect

şuna benzer:

onCellSelect: function(row, col, content, event) { 
    var cm = grid.jqGrid("getGridParam", "colModel"); 
    if (window.getSelection) { 
     selection = window.getSelection(); 
    } else if (document.selection) { 
     selection = document.selection.createRange(); 
    } 
    selectionColumn = cm[col].name; 
    selection.toString() !== '' && $("#gs_"+selectionColumn).val(selection.toString()); 
    console.log($("a.soptclass[data-colname='"+selectionColumn+"']").attr('data-soper')); 
    if(selection.toString() != '') 
    { 
     grid[0].triggerToolbar(); 
    } 

} 

Şimdi ben özelleştirilmiş bazı arama operatörleri ve ızgara kullanmaktan:

searchoptions:{sopt:["cn",'mc','mn',"eq","ne","lt","le","gt","ge","bw","ew","nc"]} 

mc ve mncustomSortOperations bir parçasıdır .

Şimdi istediğim, kullanıcı bir ızgara içindeki belirli bir hücrenin içinde bir metin seçtiğinde, hangi arama filtresinin kullanıldığını belirlemek istiyorum. Örneğin, varsayılan olarak, arama filtresi cn'dur.

$("a.soptclass[data-colname='"+selectionColumn+"']").attr('data-soper') 

ama bana varsayılan cn her şey verir:

Bunu denedim.

Ben

$("a.soptclass[data-colname='"+selectionColumn+"']").text() 

Ancak oldukça kesin arama operatörü seçilen almanın bir jqGrid yolu yoktur

ile eq için cn için ~ gibi bana sembolik bir ad verecek linke içindeki metni, == alabilirim? yani cn, eq, ne, le vb

çalışan bir demo gerekiyorsa bana bildirin ve ben soruyu güncelleyecektir edin.

UPDATE:DEMO. hat 659 ve 660 günü

ben başka deyişle $("a.soptclass[data-colname='"+selectionColumn+"']").text()

Ben hala tam değil uygulamak istediğiniz tam hangi davranış anlama onCellSelect

+0

Seni doğru anladığımdan emin değilim. Hangi geri arama içinde '$ (" a.soptclass [data-colname = '"+ selectionColumn +"'] ") gibi ifadeleri kullanmaya çalıştınız. Test vakasıyla bir demo hazırlayabilir misiniz?Ne uygulamak istediğinizi tam olarak anlayabilseydim size yardımcı olurdum. – Oleg

+0

@Oleg Bir demo hazırladım (burada) (http://jsfiddle.net/jbksad8e/). Zamanınız olduğunda lütfen bir göz atın. –

cevap

1

içine seçilen arama operatörü istiyorum bu geri arama kullanıyorum, ama öyle görünüyor aşağıdaki ile onCellSelect kodu başlatabilmek:

onCellSelect: function(row, col, content, event) { 
    var p = $(this).jqGrid("getGridParam"); 
    var hDiv = p.frozenColumns === true && p.colModel[col].frozen === true ? 
       this.grid.fhDiv : this.grid.hDiv; 
    var $elem = $(hDiv).find("#gs_" + $.jgrid.jqID(p.id + "_" + p.colModel[col].name)); 
    var oper = $elem.parent().prev().children("a").data("soper"); 
    ... 
} 

$elem akım serbest jqGrid uygulamasının standart id davranışını (no 01 kullananseçeneği filterToolbar belirtilmiştir). $elem öğesi, filtre araç çubuğundaki <input> veya <select> öğedir. Değeri değiştirmek için $elem(selection)'u kullanabilirsiniz. oper değişkeni şu anda seçilen arama işlemini içerir. Verilere erişmek için, .attr("data-soper") yerine .data("soper") kullanılmalıdır.

Umarım şu an kaybettiğiniz şeydir.

+0

Merhaba @Oleg, tam istediğim bu. Bu tür bir zorunluluğun amacı, şu anda gerçekleşmekte olan metinlerin seçiminde arama yapabilmeyi sağlamaktır. Ancak, birden fazla filtre içermeyen bir filtre uygulamak istedim. Dolayısıyla, kullanıcı önce filtreyi seçebilmeli ve ardından hariç tutmak istedikleri dizeyi seçebilmelidir. Yani bunu yapmak için ne tür bir filtrenin seçildiğini tespit etmem gerekiyordu. Bu harika çalışıyor. Tekrar teşekkürler. –

+0

@DipenShah: Rica ederim! Seçimi, sağ fare tıklaması ile birleştirmeyi deneyebilirsiniz; bu, sütun için izin verilen arama işleminden içerik menüsü oluşturur ve sonradan yapılan seçimi, içerik menüsünde seçtikten sonra zorlamaya yarar. Aynı içerik menüsünü sağ fare tıklaması olmadan görüntülemeyi düşünebilirsiniz (seçimden hemen sonra). Kullanıcı seçilen kelimeyi görecek ve doğrudan arama işlemini seçebilecektir. – Oleg

+0

önerileriniz için teşekkür ederiz, ancak bu kullanıcı şu anda gerçekleşen birinin 2 kez tıklatılmasını sağlayacaktır. Çoğu zaman kullanıcının normal bir tıklama yapacağı tek bir tıklama ile yapılabilen filtre içerir. Ancak, bağlamsal bir menü veya benzer bir şey sağlamazsam, istemediğim bir tane daha tıklar. –

İlgili konular