0

我正在使用 jqgrid 4.4 的 inlineNav 功能为我的子网格提供添加/编辑功能。但是我不知道如何调用 Add 事件。当我“添加”记录时,只会调用更新事件。

我也不知道如何将父网格行中的 row_id 获取到子网格中,以便可以将其传递给 Add 事件。

这是我的代码

<script type="text/javascript">
    $(document).ready(function () {
        $('#jqgFactors').jqGrid({
            //url from wich data should be requested
            url: '@Url.Action("GetFactors")',
            //type of data
            datatype: 'json',
            //url access method type
            mtype: 'POST',
            //columns names
            colNames: ['id', 'category', 'question type', 'question', 'tooltip text', 'xdata', 'warningexception'],
            //columns model
            colModel: [
                        { name: 'id', index: 'id', align: 'left', editable: false, width: '40px', fixed: true, key: true },
                        { name: 'categoryid', index: 'categoryid', align: 'left', editable: true, edittype: 'select', width: '80px', fixed: true, editoptions: { value: { 1: 'Departure', 2: 'Pilot', 3: 'Product', 4: 'Flight', 5: 'Destination'} }, editrules: { required: true} },
                        { name: 'type', index: 'type', align: 'left', editable: true, edittype: 'select', width: '100px', fixed: true, editoptions: { value: { 1: 'RadioButton List', 2: 'DatePicker'} }, editrules: { required: true} },
                        { name: 'questiontext', index: 'questiontext', align: 'left', editable: true, edittype: 'textarea', width: '200px', fixed: true, editoptions: { rows: '5', cols: '40' }, editrules: { required: true} },
                        { name: 'tooltip', index: 'tooltip', align: 'left', editable: true, edittype: 'textarea', width: '300px', fixed: true, editoptions: { rows: '5', cols: '40' }, editrules: { required: true} },
                        { name: 'x', index: 'x', align: 'left', editable: true, edittype: 'select', width: '60px', fixed: true, editoptions: { value: { 1: 'true', 0: 'false'} }, editrules: { required: true} },
                        { name: 'warningexception', index: 'warningexception', align: 'left', editable: true, edittype: 'select', width: '60px', editoptions: { value: { 1: 'true', 0: 'false'} }, editrules: { required: true} }
                      ],
            //pager for grid
            pager: $('#jqgpFactors'),
            rowNum: 60,
            sortname: 'id',
            sortorder: 'asc',
            viewrecords: true,
            height: '100%',
            width: 900,
            subGrid: true,
            subGridRowExpanded: function (subgrid_id, row_id) {
                var subgrid_table_id;
                var subgrid_pager_id;
                subgrid_table_id = subgrid_id + "_t";
                subgrid_pager_id = "p_" + subgrid_table_id;
                $("#" + subgrid_id).html("<table id='" + subgrid_table_id + "' class='scroll'></table><div id='" + subgrid_pager_id + "' class='scroll'></div>");
                $("#" + subgrid_table_id).jqGrid({
                    url: '@Url.Action("GetFactorDetails")',
                    postData: { QuestionId: function () { return row_id; } },
                    datatype: "json",
                    mtype: "POST",
                    colNames: ['id', 'questionid', 'text', 'influence', 'weight'],
                    colModel: [
                                { name: "id", index: "id", key: true, hidden: true },
                                { name: "questionid", index: "questionid", hidden: true },
                                { name: "text", index: "text", width: 700, editable: true, edittype: 'text' },
                                { name: "influence", index: "influence", width: 80, editable: true, edittype: 'text', editrules: { required: true, integer: true} },
                                { name: "weight", index: "weight", sortable: false, width: 80, editable: true, edittype: 'text', editrules: { required: true, integer: true} }
                              ],
                    height: '100%',
                    rowNum: 5,
                    sortname: 'id',
                    sortorder: 'asc',
                    pager: subgrid_pager_id,
                    editurl: 'clientArray',
                    width: 860
                });
                $("#" + subgrid_table_id).jqGrid('navGrid', '#' + subgrid_pager_id, { edit: false, add: false, del: false });
                $("#" + subgrid_table_id).jqGrid('inlineNav', '#' + subgrid_pager_id, {
                    addParams: {
                        addRowParams: {
                            keys: true,
                            url: '@Url.Action("AddFactorDetail")'
                        }
                    },
                    editParams: {
                        url: '@Url.Action("UpdateFactorDetail")'
                    },
                    add: true,
                    edit: true,
                    save: true,
                    cancel: true
                }
                });
            }
        });

        $.jgrid.nav.addtext = "Add Record";
        $.jgrid.nav.edittext = "Edit Record";
        $.jgrid.nav.deltext = "Delete Record";
        $('#jqgFactors').jqGrid('navGrid', '#jqgpFactors',
            { add: true, del: true, edit: true, search: false },
            { width: 'auto', url: '@Url.Action("UpdateFactor")' },
            { width: 'auto', url: '@Url.Action("UpdateFactor")' },  //insert
            { width: 'auto', url: '@Url.Action("DeleteFactor")' });
        $('#dlgFactor').dialog({ autoOpen: false, bgiframe: true, resizable: false, title: 'Factor' });
        $('a[data-supplier-id]').live('click', function (e) {
            if (e.preventDefault)
                e.preventDefault();
            else
                e.returnValue = false;

            var dialogPosition = $(this).offset();
            $.post('@Url.Action("Factor")', { FactorId: $(this).attr('data-supplier-id') }, function (data) {
                $('#dlgFactor').empty();
                $('#tmplFactor').tmpl(data).appendTo('#dlgFactor');
                $('#dlgFactor').dialog('option', 'position', [dialogPosition.left, dialogPosition.top]);
                $('#dlgFactor').dialog('open');
            });
        });
    });

这就是我希望控件的样子:更新工作正常。

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult UpdateFactorDetail(FactorDetailModel model, int Id)
    {
            model.QuestionId = Id;
            FactorManager fm = new FactorManager();
            return Json(fm.UpdateDetail(model));
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AddFactorDetail(FactorDetailModel model, int QuestionId)
    {
            model.QuestionId = QuestionId;
            FactorManager fm = new FactorManager();
            return Json(fm.AddDetail(model));
    }
4

1 回答 1

0

我不确定您的第一个问题,但对于您的第二个问题,我认为以下链接会对您有所帮助..

wiki-subgrid 事件检查示例

Rick 和 Eric 的回答- 我假设您在编辑帖子时已经知道这一点。

访问父网格 ID

希望能帮助到你。

于 2012-09-19T04:30:58.373 回答