2012-04-04 5 views
0

Ich benutze JQgrid und ich habe den Suchdialog immer geöffnet. Ich möchte, dass die Eingabetaste die Suche startet, wenn sie gedrückt wird. Ich habe einige andere Lösungen ausprobiert, wie zum Beispiel die onbeforeshowseach-Methode in der Suche, aber dann wird es mein immer geöffnetes Suchfeld los. Kann mir jemand helfen, das herauszufinden? Hier ist mein Gitter und suchen Dialogcode:Will Enter-Taste zum Triggern der Suche mit jqgrid

//Create the grid 
var grid = $("#list"), prmSearch = { multipleSearch: false, overlay: false }; 
    var url = window.URLS.get('MySample'); 
    $("#list").jqGrid({ 
     url: url, 
     datatype: 'json', 
     mtype: 'POST', 
     postData: { 
      ignoreCurrentSelectionPage: function() { return ignoreCurrentSelectionPage; }, 
      groupNo: '<%= ViewBag.value1%>', 
      groupType: '<%= ViewBag.value2%>' 
     }, 
     colNames: ['Col1', 'Col2', 'Col3','Col4', 'Col5','Col6', 'Col7'], 
     colModel: [ 
     { name: 'Col1', index: 'Col1', width: 300, align: 'center', hidden: true }, 
     { name: 'Col2', index: 'Col2', width: 250, align: 'left', search: true, searchoptions: { sopt: ['bw', 'ew','cn','eq', 'ne' ]} }, 
     { name: 'Col3', index: 'Col3', width: 240, align: 'left' , search: true, searchoptions: { sopt: ['bw', 'ew','cn','eq', 'ne' ]}}, 
     { name: 'Col4', index: 'Col4', width: 100, align: 'center', search: false }, 
     { name: 'Col5', index: 'Col5', width: 100, align: 'center', search: false }, 
     { name: 'Col6', index: 'Col6', width: 100, align: 'center', search: false }, 
     { name: 'Col7', index: 'Col7', editable: true, edittype: 'checkbox', editoptions: { value: "yes:no" },search:false, 
      formatter: "checkbox", formatoptions: { disabled: false }, align: 'center', width: 50 
     }, 
     ], 
     pager: jQuery('#pager'), 
     rowNum: 15, 
     rowList: [10, 15, 25, 50, 100, 500], 
     sortname: 'Col2', 
     sortorder: "asc", 
     viewrecords: true, 
     multiselect: false, 
     multikey: "ctrlKey", 
     caption: 'Sample', 
     width: "100%", 
     height: "100%", 
     loadError: function (xhr, textStatus, errorThrown) { 
     }, 
     gridComplete: function() { 

      prmSearch = { multipleSearch: true, overlay: false }; 
      ignoreCurrentSelectionPage = true; 
      $("#list").setSelection(selectedRowId, true); 



      }, 

    }).navGrid('#pager', 
     { edit: false, add: false, del: false, search: true, refresh: true }, 
     {}, // default settings for edit 
     {}, // default settings for add 
     {}, // delete instead that del:false we need this 
     {overlay:0}, // search options 
     {}, /* view parameters*/ 
     prmSearch); 
     // create the searching dialog 
     grid.searchGrid(prmSearch); 
     // find the div which contain the searching dialog 
     //var searchDialog = $("#searchmodfbox_" + grid[0].id); 
     var searchDialog = $("#searchmodfbox_" + grid[0].id); 
     // make the searching dialog non-popup 
     searchDialog.css({ position: "relative", "z-index": "auto"}); 
     searchDialog.addClass("ui-jqgrid ui-widget ui-widget-content ui-corner-all"); 
     searchDialog.css({ position: "relative", "z-index": "auto", float: "left"}); 
     var gbox = $("#gbox_" + grid[0].id); 
     gbox.before(searchDialog); 
     gbox.css({ clear: "left"}); 
     //remove the empty span in the search dialog box. 
     //we may need to re-add this is advanced searching is turned on 
     $("#fbox_list").find('span:empty').parent().remove(); 

     //remove the empty span in the search dialog box. 
     //we may need to re-add this is advanced searching is turned on 
     $("#fbox_list").find('span:empty').parent().remove(); 

Antwort

2

ich auf die Frage beantwortet here. Die entsprechende Demo ist here. Ich nehme an, dass die Antwort nicht leicht zu finden ist, weil die Wörter "Suchen", "Dialog" und "Enter" zu häufig sind.

+0

@JPiasente: Ich kann das Problem, das Sie beschreiben, nicht reproduzieren. Welche Version von IE verwenden Sie? Können Sie die Schritte genau beschreiben? Es ist wichtig, welches Feld Sie als letztes ändern. Die Steuerung wird den Fokus haben. [Die Demo] (http://www.ok-soft-gmbh.com/jqGrid/SearchOnEnter.htm) beginnt mit der Suche nur dann, wenn der Fokus auf dem Datenfeld liegt (Eingabe oder Auswahl). Es ist Ihr Problem, dass Sie die Kommentare von [der Antwort] (http://stackoverflow.com/a/9659066/315935) lesen sollten. In den Kommentaren beschreibe ich, wie man 'keydown' Event mit ** all ** controls verbinden kann, wenn es nötig ist. – Oleg

+0

@JPiasente: Ich habe noch einmal versucht [die Demo] (http://www.ok-soft-gmbh.com/jqGrid/SearchOnEnter.htm) welche Referenz ich in IE8 gepostet habe und es funktioniert ohne Probleme. Du hast über "Description" und "Center" geschrieben. Also nehme ich an, dass es in * Ihrem * Code ein Problem gibt. Ich nehme an, dass der Teil mit dem Überschreiben von 'onChange' nicht implementiert wurde. – Oleg

+0

@JPiasente: Ich zeigte in [der Demo] (http://www.ok-soft-gmbh.com/jqGrid/SearchOnEnter.htm) was ich oben mehrfach referenziert habe wie man * interne * Methode 'onChange' überschreibt. Du hast geschrieben: "Wenn ich mein Suchfeld in ein anderes Feld ändere (Änderung von Beschreibung zu Ersteller) in IE und dann Enter drücke, scheint es, als würde es die Suche nicht auslösen". Ich verstehe, dass "Description" und "Center" in ** Ihrem ** Code und nicht in meiner Demo sind. ** Versuchen Sie das gleiche in meiner Demo **. Sie werden sehen, dass es richtig funktioniert. Sie sollten also Ihren Code mit dem Code meiner Demo vergleichen, um die Unterschiede zu finden. – Oleg