用于编辑网格中的行的模态窗体(ASP.NET MVC)

时间:2012-12-21 00:12:48

标签: jquery asp.net-mvc jquery-ui

很多天我一直试图在flexigrid中实现模态对话框编辑失败。

我从一个非常简单的例子开始:

http://mvc4beginner.com/Sample-Code/Insert-Update-Delete/Asp-.Net-MVC-Ajax-Insert-Update-Delete-Using-Flexigrid.html

我扩展了这个例子,但是我遇到了障碍,我不知道如何实现所需的功能。

我实现了以下jquery函数:

    function RunModalDialog(title, url)
    {
        $("#sform").dialog({
            autoOpen: false,
            show: "blind",
            closeOnEscape: true,
            resizable: true,
            width: 1200,
            height: 750,
            minHeight: 600,
            minWidth:950
        });
        if (title)
            $("#sform").dialog("option", "title", title);

        if (url)
            $("#sform").load(url).dialog("open");
        else
          $("#sform").dialog("open");

我从“添加”按钮(没有网址)和“编辑”按钮(带网址)调用它。

它适用于Add(虽然我还没有实现实际的保存和网格刷新),但是我无法在Edit上运行。

这是我的主视图代码

@model CardNumbers.Objects.Client

@{
    ViewBag.Title = "Clients";
}

@section scripts {
    <script src="@Url.Content("~/Scripts/Clients.js")" type="text/javascript" ></script>
}

<form id="frmClientsSearch">
    <label for="clientNo">Client No: </label>
    <input type="number" name="searchClientNo" class="numericOnly" /><br />
    <label for="clientName">Client Name: </label>
    <input type="text" size="25" value="Please enter the search value" class="SelectOnEntry"
        name="searchClientName" />

    <input type="button" id="btnClientsSearch" value="Find / Refresh" />
</form>
<div style="padding-left: 150px; padding-top: 50px; padding-bottom: 50px;" id="ClientsResults">
    <table id="flexClients" style="display: none">
    </table>
</div>

<div id="editor" style ="visibility :hidden ">
      @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "sform", title = "Client Info" }))
     { 
        @Html.Partial("_ClientForm", Model)   
      }      
</div>

客户端控制器的Edit方法返回一个

视图

    @model CardNumbers.Objects.Client

    @{
        ViewBag.Title = "Edit Client";
        Layout = "~/Views/Shared/_PopupLayout.cshtml";
    }

    @Html.Partial("_ClientForm", Model)

    @section Scripts {
        @Scripts.Render("~/bundles/jqueryval")
        
    }

我最初在_ClientForm中有BeginForm,我可以看到表单,但x(close)和Resize不起作用。我现在尝试移动启动表单的行,但现在行为更糟。

你能告诉我这是怎么回事吗?

1 个答案:

答案 0 :(得分:1)

我能想到的两件事是

  1. 检查网址是否有效
  2. 填写div后调用对话框

    $("#sform").load(url).dialog("open");

  3. 变为

        $("#sform").load(url, function(){
           $("#sform").dialog("open");
        });
    

    如果提供了“完整”回调,则会在后处理和HTML插入后执行。

    注意这是在修改之前提出的问题的答案