jqGrid besoin d'un champ modifiable sur la boîte de dialogue Ajouter mais pas de dialogue Modifier

Je suis d'essayer d'utiliser jqGrid dans mon ASP.Net l'application MVC et ont une exigence que certaines colonnes arre modifiable dans la boîte de dialogue Ajouter mais ne pas la boîte de dialogue d'Édition. Apparemment, la façon de le faire est d'utiliser le beforeShowForm d'événements javascript et définissez les propriétés sur le champ de saisie.

Jusqu'à présent, je n'arrive pas à obtenir le beforeShowForm cas d'incendie. Ci-dessous est un exemple que j'ai trouvé sur un autre DONC, la question mais jusqu'à présent, je n'ai pas réussi à le faire fonctionner. Est-il une astuce qui m'échappe? J'utilise la dernière version 3.8 de jqGrid.

Contrôleur:

 [Authorize]
 public ActionResult Index()
 {
      var gridModel = new MyGridModel();
      SetUpGrid(gridModel.MyGrid);
      return View(gridModel);
 }

 private void SetUpGrid(JQGrid grid)
 {
        grid.DataUrl = Url.Action("GridDataRequested");
        grid.EditUrl = Url.Action("EditRows");
        grid.ToolBarSettings.ShowSearchToolBar = false;

        grid.ToolBarSettings.ShowEditButton = true;
        grid.ToolBarSettings.ShowAddButton = true;
        grid.ToolBarSettings.ShowDeleteButton = true;
        grid.ToolBarSettings.ShowRefreshButton = true;
        grid.EditDialogSettings.CloseAfterEditing = true;
        grid.AddDialogSettings.CloseAfterAdding = true;

        grid.EditDialogSettings.Modal = false;
        grid.EditDialogSettings.Width = 500;
        grid.EditDialogSettings.Height = 300;

        grid.ClientSideEvents.GridInitialized = "initGrid";
 }

Modèle:

public class MyGridModel
{
    public JQGrid MyGrid { get; set; }

    public MyGridModel()
    {
      MyGrid = new JQGrid
      {
        Columns = new List<JQGridColumn>()
        {
            new JQGridColumn { DataField = "id", 
                               PrimaryKey = true,
                               Visible = false,
                               Editable = false },
            new JQGridColumn { DataField = "username", 
                               Editable = true,
                               EditFieldAttributes = new List<JQGridEditFieldAttribute>()
                               {
                                     new JQGridEditFieldAttribute(){ Name = "readonly", Value = "true"},
                                     new JQGridEditFieldAttribute(){ Name = "disabled", Value = "true"}
                                },
                                Width = 100},
            new JQGridColumn { DataField = "domain", 
                               Editable = true,
                               EditFieldAttributes = new List<JQGridEditFieldAttribute>()
                               {
                                    new JQGridEditFieldAttribute(){ Name = "readonly", Value = "true"},
                                    new JQGridEditFieldAttribute(){ Name = "disabled", Value = "true"}
                                },
                                Width = 100}
              }
          }
     }
}

Vue:

function initGrid() {

  jQuery("#myGrid").jqGrid('navGrid','#myGrid-pager',
            { }, //options
            { //edit options
                beforeShowForm: function(frm) {
                    alert("beforeShowForm edit");
                }
            },
            { //add options
                beforeShowForm: function(frm) {
                    alert("beforeShowForm add");
                }
            },
            { }, //del options
            { } //search options
        );
}

<div>           
    <%= Html.Trirand().JQGrid(Model.MyGrid, "myGrid") %>
</div>

OriginalL'auteur sipwiz | 2010-10-16