Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jqGrid自定义编辑对话框_Php_Jquery_Jqgrid - Fatal编程技术网

Php jqGrid自定义编辑对话框

Php jqGrid自定义编辑对话框,php,jquery,jqgrid,Php,Jquery,Jqgrid,我正在为一个使用jqGrid的应用程序工作。问题在于,应在行编辑时显示的编辑对话框必须具有特定的布局。所以我更愿意通过ajax加载它,然后手动将数据发送回jqGrid。我在论坛上搜索了很多,但是我找不到一个如何做的例子 因此,我只需要jqGrid用PHP脚本中的自定义内容填充编辑对话框弹出窗口 更新:我的想法是有一个表单生成器,用户可以在其中设置编辑字段的位置/宽度/高度/可见性。。。这必须在编辑对话框中使用。您可以查看这个,它是jqGrid插件的官方演示网站。我确信在这一类中有一些“行编辑”的

我正在为一个使用jqGrid的应用程序工作。问题在于,应在行编辑时显示的编辑对话框必须具有特定的布局。所以我更愿意通过ajax加载它,然后手动将数据发送回jqGrid。我在论坛上搜索了很多,但是我找不到一个如何做的例子

因此,我只需要jqGrid用PHP脚本中的自定义内容填充编辑对话框弹出窗口

更新:我的想法是有一个表单生成器,用户可以在其中设置编辑字段的位置/宽度/高度/可见性。。。这必须在编辑对话框中使用。

您可以查看这个,它是jqGrid插件的官方演示网站。我确信在这一类中有一些“行编辑”的例子。您也可以在这个演示网站上查看jqGrid的许多其他示例。
您也可以查看

如果你还有什么问题,可以在这里问。我确实在我客户的一个(机密)网站上使用了其中的一些例子,因此它很容易根据您的需要进行操作


希望有帮助。

您可以使用的
editfunc
addfunc
选项。例如,如果定义了
editfunc
,则将调用
editfunc
,而不是jqGrid,并将所选行的id作为参数

您可以使用的备选方案(请参见示例)

要在自定义编辑对话框之后修改表中的数据,可以使用函数


已更新:如果您只需要对编辑对话框的布局进行一些修改,您可以使用这些修改。

我的编辑对话框中的字段太多,因此变得太高,因此我不得不将字段并排放在两列中。我是这样做的:

afterShowForm: function () { SplitFormatForm("SiteAccountsGrid", false); }
我尝试了各种方法,使用wrap()等,但发现如果修改原始表结构,这些值不会发布到服务器。所以我只是克隆了tr元素,将它们放在新表中,并隐藏了旧表。我没有隐藏整个表,以便验证仍然可见。我对克隆的元素进行了一次更改以更新旧的元素。这很有效。参数tableName是jqgrid元素id

var splitFormatted = false;
function SplitFormatForm(tableName, add) {
  if (!splitFormatted) {
    splitFormatted = true;
    $("#FrmGrid_" + tableName).append('<table><tr><td><table id="TblGrid_' + tableName + '_A" class="EditTable" border="0" cellSpacing="0" cellPadding="0" /></td><td><table id="TblGrid_' + tableName + '_B" class="EditTable" border="0" cellSpacing="0" cellPadding="0" /></td></tr></table>');

    var cc = $("#TblGrid_" + tableName + "> tbody").children("tr").length;
    var s = (cc / 2) - 1;

    var x = $("#TblGrid_" + tableName + "> tbody").children("tr");
    var i = 0;
    x.each(function (index) {
        var e = $(this).clone();
        var oldID = e.attr("id") + "";
        var newID = oldID;
        if (oldID.substring(0, 3) === "tr_") {
            newID = "clone_" + oldID;
            $(this).css("display", "none");
            e.change(function () { $("#" + oldID + " > .DataTD > .FormElement").val($("#" + newID + " > .DataTD > .FormElement").val()); });
            e.attr("id", newID);

            if (i++ < s) {
                $("#TblGrid_" + tableName + "_A").append(e);
            }
            else {
                $("#TblGrid_" + tableName + "_B").append(e);
            }
        }
    });

    //This hack makes the popup work the first time too
    $(".ui-icon-closethick").trigger('click');
    var sel_id = "'new'";
    if (!add) {
        sel_id = jQuery('#'+tableName).jqGrid('getGridParam', 'selrow');
    }
    jQuery('#'+tableName).jqGrid('editGridRow', sel_id, { closeAfterAdd: true, width: 800, afterSubmit: function (response, postdata) { return [response.responseText == 'OK', response.responseText]; } });
}}

谢谢,但我已经准备好检查了。我需要的是一个自定义编辑对话框,它与网格中的字段无关。“编辑行”应向我发送行id,我将返回对话框中显示的HTML和JS代码。@Andrei-您检查了“行编辑”类别中的所有5个示例了吗?在右面板中的每个示例下面都有代码片段。谢谢,但它似乎不起作用:(,我试过这样:…).navGrid('#navId',{edit:true},{editfunc:function(id){alert(id);},高度:600,重载后提交:false,jqModal:true,closeOnEscape:true})@安德烈:这样它就不能工作了
editfunc
addfunc
navGrid
的选项,而不是
prmEdit
参数的一部分。因此,您应该尝试
…).navGrid('#navId',{edit:true,editfunc:function(id){alert(id);}})