使用自定义编辑按钮在编辑模式下打开DevExpress MVC网格

使用自定义编辑按钮在编辑模式下打开DevExpress MVC网格,devexpress,devexpress-mvc,devexpress-gridcontrol,Devexpress,Devexpress Mvc,Devexpress Gridcontrol,我使用的是Devexpress MVC网格,我添加了两个自定义按钮(编辑和复制),我正在执行这些操作。使用“复制”按钮,我将使用现有数据创建一个新记录,并以“添加新行”模式打开网格 代码如下: @Html.DevExpress().GridView(grid => { grid.Name = "gvInformation"; grid.SettingsDetail.AllowOnlyOneMasterRowExpanded = true; grid.SettingsE

我使用的是Devexpress MVC网格,我添加了两个自定义按钮(编辑和复制),我正在执行这些操作。使用“复制”按钮,我将使用现有数据创建一个新记录,并以“添加新行”模式打开网格

代码如下:

@Html.DevExpress().GridView(grid =>
{
    grid.Name = "gvInformation";
    grid.SettingsDetail.AllowOnlyOneMasterRowExpanded = true;
   grid.SettingsEditing.Mode = GridViewEditingMode.EditForm;

    //Callback Events
    grid.CallbackRouteValues = new { Controller = "Case", Action = "InformationGridContent"};
    grid.SettingsEditing.AddNewRowRouteValues = new { Controller = "Case", Action = "AddInformationRecord" };
    grid.SettingsEditing.UpdateRowRouteValues = new { Controller = "Case", Action = "UpdateInformationRecord" };
    grid.SettingsEditing.DeleteRowRouteValues = new { Controller = "Case", Action = "DeleteInformationRecord" };
    grid.ClientSideEvents.BeginCallback = "BeginGridCallback";
    grid.BeforeGetCallbackResult = (sender, e) =>
    {
        MVCxGridView gridView = sender as MVCxGridView;
        if (isCopyRequired)
            gridView.AddNewRow();

        if (gridView.IsNewRowEditing)
        {
            gridView.SettingsText.CommandUpdate = Html.Raw("<span id='btnGridAdd'>Add</span>").ToHtmlString();
            gridView.SettingsText.CommandCancel = Html.Raw("<span id='btnGridCancel'>Cancel</span>").ToHtmlString();
        }

        if (!gridView.IsNewRowEditing)
        {
            gridView.SettingsText.CommandUpdate = Html.Raw("<span id='btnGridUpdate'>Update</span>").ToHtmlString();
            gridView.SettingsText.CommandCancel = Html.Raw("<span id='btnCancel'>Cancel</span>").ToHtmlString();
        }
    };

        //Custom Copy Record Button
    var btnCopy = new GridViewCommandColumnCustomButton { ID = "btnCopy" };
    btnCopy.Text = "<i class=\"fa fa-copy fa-lg\" title='Copy'></i>";
    grid.CommandColumn.CustomButtons.Add(btnCopy);

    //Custom Edit Button
    var btnEdit = new GridViewCommandColumnCustomButton { ID = "btnEdit" };
    btnEdit.Text = "<i class=\"fa fa-pencil fa-lg\" title='Edit'></i>";
    grid.CommandColumn.CustomButtons.Add(btnEdit);

    //Custom Button Events
    grid.ClientSideEvents.CustomButtonClick = "OnCustomButtonClick";
    grid.CustomActionRouteValues = new { Controller = "Case", Action = "CustomInformationRecord" };
    }

“复制”按钮和在“编辑表单”模式下打开网格都可以正常工作,但单击“编辑”按钮时,不会在编辑模式下打开网格。是否有我遗漏的内容?

浏览器控制台中是否有错误?我认为您应该添加
s.StartEditRow(e.visibleIndex)
来开始编辑行-但我仍然不明白为什么
Copy
按钮在没有前面提到的命令的情况下以编辑模式打开网格。不,我没有收到任何错误。但是,当我在BeginGridCallback(s,e)的if条件中添加s.StartEditRow(e.visibleIndex)时,它抛出了一个错误未定义。听起来问题在于您使用的是
ASPxClientBeginCallbackEventArgs
处理程序,而不是
ASPxClientGridViewCustomButtonEventArgs
中存在的
OnCustomButtonClick
。如果要在自定义
edit
按钮单击后打开编辑表单,应在
oncustombutton中添加
s.StartEditRow(e.visibleIndex)
而不调用整个网格回调函数。
var buttonCommand;
function OnCustomButtonClick(s, e) {
    buttonCommand = e.buttonID;
    s.PerformCallback();
}

function BeginGridCallback(s, e) {
    //Grid Edit Button Click Event
    if (buttonCommand === "btnEdit") {
        e.customArgs["buttonCommand"] = "btnEdit";
    }

    //Grid Copy Button Click Event
    if (buttonCommand === "btnCopy") {
        e.customArgs["buttonCommand"] = "btnCopy";
    }
}