当我添加/编辑数据时,我想将数据保存到数据库(MySQL)。下面是我的jqgrid:
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/start/jquery-ui.css"
type="text/css" rel="Stylesheet" />
<link href="/css/style.css" type="text/css" rel="Stylesheet" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.js"></script>
<script src="/js/custom.js"></script>
<link rel='stylesheet' type='text/css' href='http://www.trirand.com/blog/jqgrid/themes/ui.jqgrid.css' />
<script type='text/javascript' src='http://www.trirand.com/blog/jqgrid/js/jquery-ui-custom.min.js'></script>
<script type='text/javascript' src='http://www.trirand.com/blog/jqgrid/js/i18n/grid.locale-en.js'></script>
<script type='text/javascript' src='http://www.trirand.com/blog/jqgrid/js/jquery.jqGrid.js'></script>
<script>
$(document).ready(function() {
$("#myDataList").jqGrid({
url: "<?= base_url(); ?>getmydata",
datatype: "json",
autowidth: true,
mtype: "GET",
colNames: ["Date", "Description", "Category", "Debit", "Credit", "Type", "Amount"],
colModel: [{
name: "transactiondate",
editable: true,
editrules: {
date: true
},
formatter: 'date',
formatoptions: {
srcformat: "Y-m-d",
newformt: "Y-m-d"
},
width: 1
}, {
name: "description",
editable: true,
width: 3
}, {
name: "category",
editable: true,
width: 1
}, {
name: "debit",
sort: false,
formatter: 'number',
width: 1
}, {
name: "credit",
sort: false,
formatter: 'number',
width: 1
}, {
name: "type",
editable: true,
hidden: true,
editrules: {
edithidden: true
},
formatter: function(cellvalue) {
if (cellvalue == 'W') {
return 'Withdraw';
} else if (cellvalue == 'D') {
return 'Deposit';
} else {
return '';
}
},
edittype: 'custom',
editoptions: {
custom_element: radioelem,
custom_value: radiovalue
}
}, {
name: "amount",
editable: true,
hidden: true,
editrules: {
edithidden: true
}
}],
pager: "#myDataListPager",
rowNum: 10,
rowList: [10, 20],
sortname: "transactiondate",
sortorder: "desc",
height: 'auto',
viewrecords: true,
gridview: true,
caption: "",
editurl: "<?= base_url(); ?>getmydata/action",
});
jQuery("#myDataList").jqGrid('navGrid', '#myDataListPager', {
add: true,
edit: true,
del: true,
search: true
}, { //prmEdit
closeAfterEdit: true,
afterSubmit: function() {}
}, { //prmAdd
closeAfterAdd: true,
afterSubmit: function() {}
});
});
<table id="myDataList"></table>
<div id="myDataListPager"></div>
我现在的问题是编辑或添加后,窗体不关闭。也有可能重新调整添加/编辑表单的宽度和输入宽度,例如,我想要的描述输入作为文本区,而不是文本域?
如果我目前了解您的第一个问题,那么您应该将recreateForm: true
选项添加到添加和编辑选项中。jqGrid的默认行为是隐藏添加/编辑表单。在下一次调用时,表单将再次显示,一些属性将尝试调整。因此,如果用户先点击添加按钮,然后编辑,那么添加表单将首先创建,然后在点击编辑按钮jqGrid显示添加表单,只是设置一些属性(标题,调用一些回调等)。在我看来,使用recreateForm: true
更安全,它首先删除任何旧的,如果有些存在,然后才创建新的形式。
textarea
代替input
字段的使用可以通过usage edittype属性来管理:edittype: "textarea"
.