按照你昨天帮忙,我修改了程序。group那个html页面点击add按钮的时候,弹出dialog。当然,这个dialog是动态装载远程url。(保证表和列,能够反应当前编辑结果。如select .. from t1, t2, t3。该url应该将t3表的column也展示出来)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" media="screen" href="../css/flick/jquery-ui-1.8.5.custom.css" />
<link rel="stylesheet" type="text/css" media="screen" href="../css/ui.jqgrid.css" />
<style>
.table-div { width: 280px; padding: 0.5em; float:left}
</style>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script>
<script src="../js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script src="../js/jquery.jqGrid.min.js" type="text/javascript"></script>
<title>Select</title>
</head>
<body>
<div style="display:hidden" id="selectColumn"></div>
<script type="text/javascript">
jQuery( document ).ready( function() {
// list
jQuery("#group").jqGrid({
datatype: "local",
colNames:['Table(Alias)','Column'],
colModel:[
{name:'table',sortable:false},
{name:'column',sortable:false}
],
autowidth: true
});
// load pre-defined group colums
jQuery("#group").jqGrid('addRowData',1,
{table:'demouser (demouser)',column:'id'});
jQuery("#group").jqGrid('addRowData',2,
{table:'demouser (demouser)',column:'isManager'});
jQuery("#group").jqGrid('addRowData',3,
{table:'demouser (demouser)',column:'name'});
// current select row
var rowObject=null;
jQuery("#group").find('tr').each(function(index,tr){
if(index>0) {
$(this).click(function(){
rowObject = $(this);
});
}
});
// bind events with buttons
jQuery("#add").click(function(){
var url="../query/designQuery?oper=selectColumn&queryId=5";
var dialog = jQuery("#selectColumn");
dialog.html("");
// load remote content
dialog.load(
url,
{},
function (responseText, textStatus, XMLHttpRequest) {
dialog.dialog({
modal: true,
buttons: {
Ok: function() {
// TODO get tableSelect and columnSelect values from dialog
$( this ).dialog( "close" );
}
}
});
}
);
});
jQuery("#up").click(function(){
if(rowObject==null) {
return false;
}
var prev = rowObject.prev();
if(!prev.get(0)) {
return false;
}
var prev_prev = prev.prev();
if(!prev_prev.get(0)) {
return false;
}
rowObject.remove();
rowObject.insertAfter(prev_prev);
});
jQuery("#down").click(function(){
if(rowObject==null) {
return false;
}
var next = rowObject.next();
if(!next.get(0)) {
return false;
}
rowObject.remove();
rowObject.insertAfter(next);
});
jQuery("#delete").click(function(){
if(rowObject==null) {
return false;
}
rowObject.remove();
});
});
</script>
<input type="button" id="add" value="Add" />
<input type="button" id="up" value="Move Up" />
<input type="button" id="down" value="Move Down" />
<input type="button" id="edit" value="Edit" />
<input type="button" id="delete" value="Delete" />
<table id="group"></table>
</body>
</html>
url="../query/designQuery?oper=selectColumn&queryId=5"; 弹出的dialog html代码是:
dialog取内容是POST方法,请注意
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" media="screen" href="../css/flick/jquery-ui-1.8.5.custom.css" />
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery-ui-1.8.5.custom.min.js" type="text/javascript"></script>
</head>
<body>
<script>
var allColumnArray=new Array();
allColumnArray[0]=new Array('id','loginName','name','password','companyId','departmentId','isManager','hireDate');
allColumnArray[1]=new Array('id','name','parentId','companyLevel');
allColumnArray[2]=new Array('id','name','parentId');
jQuery( document ).ready( function() {
// cascade tableSelect with columnSelect
jQuery("#tableSelect").change(function() {
var index=jQuery(this).get(0).selectedIndex;
changeColumnOptions(index);
});
changeColumnOptions(0);
});
function changeColumnOptions( index ) {
var oColumnSelect=jQuery("#columnSelect");
oColumnSelect.find("option").remove();
var columnArray=allColumnArray[index];
for( i=0; i<columnArray.length; i++ ) {
var oOption=new Option(columnArray[i],columnArray[i]);
oColumnSelect.append( oOption );
}
}
</script>
<label>Table:</label>
<select id="tableSelect" name="table">
<option value="demouser (demouser)">demouser (demouser)</option>
<option value="company (company)">company (company)</option>
<option value="department (department)">department (department)</option>
</select>
<br/>
<label>Column:</label>
<select id="columnSelect" name="column">
</select>
</body>
</html>
点击OK按钮,报错(使用firebug看到的错误):uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'close'