PHP jqGrid可以编辑添加/编辑表单属性


PHP jqGrid can edit the add/edit form properties?

当我添加/编辑数据时,我想将数据保存到数据库(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" .