jqGrid構造下拉表コントロールdropDownGrid-ace Admin
20440 ワード
jqGrid構造下拉表コントロールdropDownGrid-ace Admin
この記事のアドレス:http://blog.csdn.net/zrk1000/article/details/46560791
質問を発する
ace Adminを使って開発中にmodalを使ってフォームをイジェクトします.入力枠はデータベースの他のテーブルから値を取って充填する必要があります.一般的にselectやより便利なcheconでいいです.下に複数の列を表示する必要があれば、チョセンは満足できません.modalでmodalを弾くと、下にあるmodalのスクロールイベントに影響します.多層modalは良い選択ではありません.プルダウンテーブルを提供できるコントロールは現在、JQuery MagicGridとjquery compgridが二つあると知っています.このような形の衝突は完全に解決できません.
問題を解決する
長い間苦労しても自分で書いたのは簡単です.スペースでjqgridを集めたので、直接jqgrid表を使って、bootstrapのdropdownと結合して完成しました.スタイルはace.cssを使っています.もちろんbootstrapのスタイルもあります.カスタムマルチカラムクエリを提供します.一般需要に対応して、modalでの使用効果図は以下の通りです.
コール方式-htmlコード:
この記事のアドレス:http://blog.csdn.net/zrk1000/article/details/46560791
質問を発する
ace Adminを使って開発中にmodalを使ってフォームをイジェクトします.入力枠はデータベースの他のテーブルから値を取って充填する必要があります.一般的にselectやより便利なcheconでいいです.下に複数の列を表示する必要があれば、チョセンは満足できません.modalでmodalを弾くと、下にあるmodalのスクロールイベントに影響します.多層modalは良い選択ではありません.プルダウンテーブルを提供できるコントロールは現在、JQuery MagicGridとjquery compgridが二つあると知っています.このような形の衝突は完全に解決できません.
問題を解決する
長い間苦労しても自分で書いたのは簡単です.スペースでjqgridを集めたので、直接jqgrid表を使って、bootstrapのdropdownと結合して完成しました.スタイルはace.cssを使っています.もちろんbootstrapのスタイルもあります.カスタムマルチカラムクエリを提供します.一般需要に対応して、modalでの使用効果図は以下の通りです.
コール方式-htmlコード:
<div class="form-group">
<label class="col-sm-2 control-label no-padding-right" >pressImg:</label>
<div class="col-sm-10">
<div class="dropdown input-group col-xs-10 col-sm-5" id="myDropdown" >
<input type="hidden" value="" name="">
<input type="text" class="dropdown-toggle" data-toggle="dropdown" style="width:215px" placeholder="" name="" value="" id="" />
</div>
</div>
</div>
呼び出し方式-jsコード:$("#myDropdown"). dropDownGrid({
jqgridOp:{
//caption:" ",
rowNum:5,
rowList:[5,10],
url : "${ctx}/***",
colNames:['',' ',' ',' ',' ',' '],
colModel:[
{name:'id',index:'id', width:10, sorttype:"int", editable: false, hidden:true},
{name:'chineseName',index:'chineseName',width:100, editable:false,search:true,searchoptions:{sopt:['like']},
formatter:function(cellvalue, options, cell){
cellvalue = "<a href='resourceView?id="+cell.id+"&type=page' target='_blank'>"+cellvalue+"</a>";
return cellvalue;
},
unformat:function(cellvalue, options, cell){
return $('a', cell).text();
}},
{name:'filePath',index:'filePath', width:20,editable: false,search:false,hidden:true},
{name:'dataTypeValue',index:'dataTypeValue', width:20,editable: false,search:false},
{name:'useType.name',index:'useType.name', width:30,editable: false,search:true,searchoptions:{sopt:['like']}},
{name:'customer.name',index:'customer.name', width:20, editable: false,search:true,searchoptions:{sopt:['like']}}
]
},
dropDown:{
keyCol:"filePath",
viewCol:"chineseName",
search:true,
extendBtn:true,
extendBtnIcon:icon,
extendBtnFunction:function(keyValue,viewValue){
if(keyValue){
//
}
},
params:{dataTypeValue:dataTypeValue}// ,jqgridOp.url
}
});
コード説明options.jqgridOp , jqgrid api
options.dropDown 、
:
dropDown:{
keyCol:"",// key
viewCol:"",//
search:true,//
params:{},//
showRefresh:false,//
extendBtn:false,//
extendBtnIcon:"fa fa-picture-o bigger-110",//
extendBtnFunction:function(keyValue,viewValue){}//
}
loadComplete
// jqgrid
grid_selector.closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" });
//
if(options.dropDown.extendBtn){
$("#extendbtn_"+randomId).bind("click",function(){
options.dropDown.extendBtnFunction(
$this.children("input[type='hidden']").attr("value"),
$this.children("input[type='text']").attr("value")
);
});
}
//
$this.find(".dropdown-menu").click(function(e) {
e.stopPropagation();
});
コードリスト/* * dropDownGrid v1.0 * author: zrk * need jquery.jqGrid.js bootstrap.min.js */
(function($) {
$.fn.dropDownGrid = function(config){
var options = $.extend(true,{
jqgridOp:{
viewrecords:true,
url : "",
colNames:[],
colModel:[]
},
dropDown:{
keyCol:"",
viewCol:"",
search:true,
params:{},
showRefresh:false,
extendBtn:false,
extendBtnIcon:"fa fa-picture-o bigger-110",
extendBtnFunction:function(keyValue,viewValue){}
}
},config);
var $this = $(this);
if($this.children("div[class='dropdown-menu']").innerHTML){
return;
}
var randomId = Math.round(Math.random()*10000);
var addonV = '<span id="clearbtn_'+randomId+'" class="input-group-addon"><i class="glyphicon glyphicon-remove"></i></span>';
if(options.dropDown.extendBtn){
addonV += '<span id="extendbtn_'+randomId+'" class="input-group-addon"><i class="'+options.dropDown.extendBtnIcon+'"></i></span>';
}
var appendV = addonV+'<div class="dropdown-menu" ><table id="grid_'+randomId+'"></table><div id="pager_'+randomId+'"></div></div>';
$this.append(appendV);
var pager_selector = $this.children("div[class='dropdown-menu']").children("div");
var grid_selector = $this.children("div[class='dropdown-menu']").children("table");
grid_selector.jqGrid({
jsonReader : {
root: 'rows',
page: 'pageNo',
total: 'totalPages',
},
height:options.jqgridOp.height||"auto",
width:options.jqgridOp.width||"600",
viewrecords:options.jqgridOp.viewrecords,
rowNum:options.jqgridOp.rowNum||10,
rowList:options.jqgridOp.rowList||[10,20,30],
pager : pager_selector,
rownumbers: true,
rownumWidth: 40,
caption:options.jqgridOp.caption,
url : options.jqgridOp.url,
postData:{},
contentType : 'application/json',
mtype : "GET",
datatype : 'json',
beforeRequest:function(){
grid_selector.jqGrid("setGridParam", { postData: options.dropDown.params });
},
onSelectRow:function(id){
$this.children("input[type='hidden']").attr("value",grid_selector.getCell(id,options.dropDown.keyCol));
$this.children("input[type='text']").attr("value",grid_selector.getCell(id,options.dropDown.viewCol));
},
colNames:options.jqgridOp.colNames,
colModel:options.jqgridOp.colModel,
loadComplete : function() {
setTimeout(function(){
var replacement =
{'ui-icon-seek-first' : 'ace-icon fa fa-angle-double-left bigger-140',
'ui-icon-seek-prev' : 'ace-icon fa fa-angle-left bigger-140',
'ui-icon-seek-next' : 'ace-icon fa fa-angle-right bigger-140',
'ui-icon-seek-end' : 'ace-icon fa fa-angle-double-right bigger-140'
};
$('.ui-pg-table:not(.navtable) > tbody > tr > .ui-pg-button > .ui-icon').each(function(){
var icon = $(this);
var $class = $.trim(icon.attr('class').replace('ui-icon', ''));
if($class in replacement) icon.attr('class', 'ui-icon '+replacement[$class]);
})
}, 0);
}
});
if(options.dropDown.search){
grid_selector.jqGrid('filterToolbar',{searchOnEnter: true});
}
if(options.dropDown.showRefresh){
$this.on('show.bs.dropdown', function () {
grid_selector.trigger("reloadGrid");
});
}
$this.find(".dropdown-menu").click(function(e) {
e.stopPropagation();
});
grid_selector.closest(".ui-jqgrid-bdiv").css({ "overflow-x" : "hidden" });
$("#clearbtn_"+randomId).bind("click",function(){
$this.children("input[type='hidden']").attr("value","");
$this.children("input[type='text']").attr("value","");
});
if(options.dropDown.extendBtn){
$("#extendbtn_"+randomId).bind("click",function(){
options.dropDown.extendBtnFunction($this.children("input[type='hidden']").attr("value"),$this.children("input[type='text']").attr("value"));
});
}
};
})(jQuery);
この記事のアドレス:http://blog.csdn.net/zrk1000/article/details/46560791