【问题标题】:Custom button on jqgrid keeps re-adding on every call - asp mvcjqgrid上的自定义按钮在每次调用时都会重新添加 - asp mvc
【发布时间】:2011-12-13 18:14:00
【问题描述】:

我在我的asp mvc模型中的jqgrid的工具栏中添加了一个自定义按钮,但是每次从视图调用获取数据到控制器(OnDataRequested)时,都会再次重新添加该按钮。这意味着如果五次调用来获取数据,则会在 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{ ToolBarSettings = { ShowRefreshButton = true, ShowSearchButton = true, ShowSearchToolBar = true, ToolBarAlign = ToolBarAlign.Left, CustomButtons = 新列表 { 新的 JQGridToolBarButton { Text = "添加到库", ToolTip = "将选定的会话添加到我的", ButtonIcon = "ui-icon-plusthick", 位置 = ToolBarButtonPosition.Last, OnClick = "AddMultipleSessionsToLibrary", } }},

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

【问题讨论】:

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


    【解决方案1】:

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

    Grid grid = new{ ToolBarSettings = { ShowRefreshButton = true, ShowSearchButton = true, ShowSearchToolBar = true, ToolBarAlign = ToolBarAlign.Left }},
    

    控制器:

    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 直接调用的。如果我错过了重点,请再解释一下。谢谢。
    • 你能把LibraryGridModel贴出来吗?
    • 模型已发布。我尝试按照建议将模型传递给 OnDataRequested,但这没有用。谢谢
    • 好的,我已经更新了我的答案。您需要从 Viewmodel 中删除按钮添加。然后在 Index Action Method 中添加。
    • 同样的问题仍在发生...有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多