Asp.net mvc jqgrid上的自定义按钮在每次调用时不断重新添加-asp mvc

Asp.net mvc jqgrid上的自定义按钮在每次调用时不断重新添加-asp mvc,asp.net-mvc,asp.net-mvc-3,jquery-ui,jqgrid,Asp.net Mvc,Asp.net Mvc 3,Jquery Ui,Jqgrid,在我的asp mvc模型中,我在jqgrid的工具栏中添加了一个自定义按钮,但是每次从视图调用controllerOnDataRequested获取数据时,都会再次添加该按钮。也就是说,如果调用五次来获取数据,就会在jqgrid上产生五个单独的按钮。我做错了什么 这是我的密码。谢谢 public virtual ActionResult Index() { var gridModel = new LibraryGridModel();

在我的asp mvc模型中,我在jqgrid的工具栏中添加了一个自定义按钮,但是每次从视图调用controllerOnDataRequested获取数据时,都会再次添加该按钮。也就是说,如果调用五次来获取数据,就会在jqgrid上产生五个单独的按钮。我做错了什么

这是我的密码。谢谢

public virtual ActionResult Index()
        {
            var gridModel = new LibraryGridModel();
             SetupGrid(gridModel.LibraryGrid);
             return View(gridModel);
        }

         public virtual JsonResult OnDataRequested()
        {
             var gridModel = new LibraryGridModel();
              return gridModel.LibraryGrid.DataBind(GetFullLibrary().AsQueryable());
        }

     public void SetupGrid(JQGrid grid)
        {
            grid.DataUrl = Url.Action("OnDataRequested","Library");
            grid.MultiSelect = true;
            grid.MultiSelectMode = MultiSelectMode.SelectOnCheckBoxClickOnly;
        }
Grid Grid=new{Toolbar Settings={ShowRefreshButton=true,ShowSearchButton=true,ShowSearchToolBar=true, ToolBarAlign=ToolBarAlign.左侧,CustomButtons=新列表 { 新建JQGridToolBar按钮 { Text=添加到库中, ToolTip=将所选会话添加到我的会话, ButtonIcon=ui图标加图标, 位置=工具栏按钮位置。最后, OnClick=AddMultipleSessionsToLibrary, } }},


我正在LibraryGrid类中添加自定义按钮。感谢您的帮助。

首先,从GridModel中删除自定义按钮。然后,仅将其添加到索引操作调用中。 型号:

控制器:

public virtual ActionResult Index()
            {
                var gridModel = new LibraryGridModel();
                gridModel.ToolBarSettings.CustomButtons.Add(
                     new JQGridToolBarButton
                     {
                         Text = "Add to Library",
                         ToolTip = "Add the selected session to mine",
                         ButtonIcon = "ui-icon-plusthick",
                         Position = ToolBarButtonPosition.Last,
                         OnClick = "AddMultipleSessionsToLibrary"
                     }
                 );
                 SetupGrid(gridModel.LibraryGrid);
                 return View(gridModel);
            }
         public virtual JsonResult OnDataRequested()
        {
             var gridModel = new LibraryGridModel();
              return gridModel.LibraryGrid.DataBind(GetFullLibrary().AsQueryable());
        }

 public void SetupGrid(JQGrid grid)
    {
        grid.DataUrl = Url.Action("OnDataRequested","Library");
        grid.MultiSelect = true;
        grid.MultiSelectMode = MultiSelectMode.SelectOnCheckBoxClickOnly;
    }

onDataRequested被网格用来请求额外的数据,例如当用户转到网格上的新页面时,调用必须在那里。我如何将模型的引用传递给onDataRequested,正如我前面所说的,它是jqgrid直接调用的。如果我没有抓住要点,请解释更多。谢谢。你能发布这个消息吗e LibraryGridModel?模型已发布。我尝试按照建议将模型传递给OnDataRequested,但没有成功。ThxOK,我已更新了我的答案。您需要从Viewmodel中删除“添加”按钮。然后将其添加到索引操作方法中。同样的问题仍在发生……有什么想法吗?
public virtual ActionResult Index()
            {
                var gridModel = new LibraryGridModel();
                gridModel.ToolBarSettings.CustomButtons.Add(
                     new JQGridToolBarButton
                     {
                         Text = "Add to Library",
                         ToolTip = "Add the selected session to mine",
                         ButtonIcon = "ui-icon-plusthick",
                         Position = ToolBarButtonPosition.Last,
                         OnClick = "AddMultipleSessionsToLibrary"
                     }
                 );
                 SetupGrid(gridModel.LibraryGrid);
                 return View(gridModel);
            }
         public virtual JsonResult OnDataRequested()
        {
             var gridModel = new LibraryGridModel();
              return gridModel.LibraryGrid.DataBind(GetFullLibrary().AsQueryable());
        }

 public void SetupGrid(JQGrid grid)
    {
        grid.DataUrl = Url.Action("OnDataRequested","Library");
        grid.MultiSelect = true;
        grid.MultiSelectMode = MultiSelectMode.SelectOnCheckBoxClickOnly;
    }