【问题标题】:DevExpress: sender.GetSelectedFieldValues not calling my client side call backDevExpress:sender.GetSelectedFieldValues 没有调用我的客户端回调
【发布时间】:2013-12-10 07:57:44
【问题描述】:

我有一个用于 MVC 的 GridExtension,如下所示:

它从中获取数据的表如下所示:

表格名称:类别

Id    Name
--------------
1     Foo
2     Bar
3     Gar
4     Har

当我从网格中选择一行或多行并单击顶部的 删除 按钮时,我希望我的 DeleteSelectedCategories 处理程序应该被调用,这确实发生了。

但是,在DeleteSelectedcategories 处理程序中,当我调用gvCategories.GetSelectedFieldValues 方法提供客户端回调DeleteCategories 时,该方法不会被调用。相反,我的所有脚本代码都显示在消息框中,如下所示:

我使用的代码与 DevExpress 文档网站上的 this example 中显示的代码几乎相同。

这是我的代码。

查看

<script type = "text/javascript">
//<![CDATA[
    $(document).ready(
        function () {
            WireHandlers();
        }
    );

        function DeleteCategories(selectedCategoriesArray) {

            debugger;

            if (selectedCategoriesArray.length == 0) return;

            for (var i = 0; i < selectedCategoriesArray.length; i++) {
                debugger;
            }
        }

        function DeleteSelectedCategories() {
            // debugger;

            if (gvCategories.GetSelectedRowCount() == 0) return;

            gvCategories.GetSelectedFieldValues('Id', DeleteCategories);
        }

        function WireHandlers() {
            $('#btnDeleteCategory').click(DeleteSelectedCategories);
        }
// ]]>
</script>

@using System.Web.UI.WebControls;
@using System.Data;
@model IEnumerable<GlobalizationUI.BusinessObjects.Category>

@Html.DevExpress().GridView(settings =>
    {
        settings.Name = "gvCategories";

        settings.CallbackRouteValues = new { Controller = "Category", Action = "CategoriesPartial" };

        settings.Width = 1200;

        settings.SettingsPager.Position = PagerPosition.TopAndBottom;
        settings.SettingsPager.FirstPageButton.Visible = true;
        settings.SettingsPager.LastPageButton.Visible = true;
        settings.SettingsPager.PageSizeItemSettings.Visible = true;
        settings.SettingsPager.PageSizeItemSettings.Items = new string[] { "10", "20", "50", "100", "200" };
        settings.SettingsPager.PageSize = 50;

        settings.Settings.ShowFilterRow = true;
        settings.Settings.ShowFilterRowMenu = true;

        settings.CommandColumn.Visible = true;
        settings.CommandColumn.ClearFilterButton.Visible = true;
        settings.CommandColumn.ShowSelectCheckbox = true;

        settings.Settings.ShowHeaderFilterButton = true;

        settings.KeyFieldName = "Id";

        settings.Columns.Add("Name");

        settings.SettingsEditing.AddNewRowRouteValues = new { Controller = "Category", Action = "CreateNew" };
        settings.SettingsEditing.UpdateRowRouteValues = new { Controller = "Category", Action = "Edit" };

        settings.SettingsEditing.Mode = GridViewEditingMode.Inline;

        settings.CommandColumn.Visible = true;
        settings.CommandColumn.NewButton.Visible = true;
        settings.CommandColumn.EditButton.Visible = true;
        settings.CommandColumn.UpdateButton.Visible = true;

    }).Bind(Model).GetHtml()

我在 Windows 7 Home Premium 上使用适用于 ASP.NET MVC 4 的 DevExpress Extensions v12.2.10.0。

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 devexpress devexpress-mvc


    【解决方案1】:

    将 GridView 设置放到一个单独的 PartialView (without any other tags)。

    【讨论】:

    • 谢谢你,@Mikhail。现在正在调用我的回调。我阅读了您链接到的文章,您可能还在 DevExpress 支持论坛上回复了我的这个查询。但是,现在,DeleteSelecteCategories 方法(它是我的 Delete 按钮的单击事件的处理程序)以及从我的 DeleteSelectedCategories 方法中调用的 DeleteCategory 方法都被调用了两次。
    • 好的,这可能与 jQuery 两次分配事件侦听器有关。我真的不知道为什么会这样,但我在这里找到了解决方案:stackoverflow.com/questions/2128163/… 就 DevExpress 位而言,谢谢@Mikhail,你帮我解决了这个问题。现在解决了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多