js 代码
- <script type="text/javascript" language="javascript">
- var v = this;
- while(v.parent){
- v = v.parent;
- if(v == v.parent) {
- break;
- }
- }
- var SearchDialog = v.Agideo.Page.SearchDialog;
- </script>
- <script type="text/javascript">
- var SearchGrid = function() {
- var cm, ds, grid, btns, toolbar;
- var fnCallBack = function() {
- if(ds.getCount() > 0) {
- grid.getSelectionModel().selectFirstRow();
- btns.btn_choose.setDisabled(false);
- }
- };
- var setValueForParent = function() {
- var desc = grid.getSelectionModel().getSelected().data["desc"].replace(/<br\/>/g, "\r\n");
- switch('<%= params[:c].downcase %>') {
- case 'shipper':
- SearchDialog.setShipper(desc);
- break;
- case 'consignee':
- SearchDialog.setConsignee(desc);
- break;
- case 'notifyparty':
- SearchDialog.setNotifyParty(desc);
- break;
- default:
- break;
- }
- };
- return {
- init : function() {
- if(!ds) {
- ds = new Ext.data.Store({
- proxy: new Ext.data.ScriptTagProxy({
- url: '<%= url_for(:controller => "booking_notes", :action => "get_search_json", :c => params[:c]) %>'
- }),
- baseParams: {q : ''},
- reader: new Ext.data.JsonReader({
- root: 'records',
- totalProperty: 'total',
- id: 'id'
- },[{
- name: 'desc', mapping: 'desc'
- }])
- })
- }
- if(!cm) {
- cm = new Ext.grid.ColumnModel([{
- header: '<%= l(:field_description) %>',
- dataIndex: 'desc',
- sortable: true
- }]);
- cm.defaultSortable = true;
- }
- if(!grid) {
- grid = new Ext.grid.Grid('search_result_grid', {
- ds: ds,
- cm: cm,
- selModel: new Ext.grid.RowSelectionModel({
- singleSelect: true
- }),
- enableColLock: false,
- monitorWindowResize: true,
- fitToFrame:true,
- loadMask: true,
- height: 418,
- autoSizeColumns: true
- });
- }
- grid.on("dblclick", function(e) {
- setValueForParent();
- });
- grid.render();
- var gridFoot = grid.getView().getFooterPanel(true);
- var paging = new Ext.PagingToolbar(gridFoot, ds, {
- pageSize: 10,
- displayInfo: true,
- displayMsg: 'Displaying records {0} - {1} of {2}',
- emptyMsg: "No records to display"
- });
- var gridHeader = grid.getView().getHeaderPanel(true);
- toolbar = new Ext.Toolbar(gridHeader);
- toolbar.add('<input id="search_question" οnkeypress="if(event.keyCode == 13){ SearchGrid.clickSearchButton(); }">', {
- id: 'btn_search',
- text: '<%= l(:button_search) %>',
- icon: '/images/search_button.gif',
- pressed: false,
- repeat: false,
- cls: "x-btn-text-icon",
- handler: function() {
- SearchGrid.reload(Ext.getDom('search_question').value);
- }
- }, {
- id: 'btn_choose',
- text: '<%= l(:button_ok) %>',
- disabled: true,
- icon: '/images/ok.png',
- pressed: false,
- repeat: false,
- cls: "x-btn-text-icon",
- handler: function() {
- setValueForParent();
- }
- });
- if(!btns) {
- btns = toolbar.items.map;
- }
- SearchGrid.reload('');
- },
- reload : function(q) {
- ds.baseParams.q = q;
- ds.load({
- params:{
- start: 0, limit: 10
- },
- callback: fnCallBack
- });
- },
- clickSearchButton : function() {
- btns.btn_search.handler();
- }
- };
- }();
- Ext.onReady(function(){
- SearchGrid.init();
- });
- </script>
- <div id="search_result_grid" style="clear:both; height:100%;"></div>