asp.net-mvc - 在特定列而不是整个网格上使用 settings.CellEditorInitialize

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

我有一个 mvc devexpress 网格,我想实现一种功能,在编辑网格时,其中一列必须是只读的,而其他列必须是可更改的。并且在添加新行时,所有列都必须是可更改的包括前面说的只读列。

这是我的网格代码

@{

    var grid = Html.DevExpress().GridView(settings =>
    {
        settings.Name = "GridViewDuration";
        settings.CallbackRouteValues = new { Controller = "DurationMaster", Action = "GridViewDurationPartial" };

        settings.SettingsEditing.AddNewRowRouteValues = new { Controller = "MyController", Action = "MyControllerAction1" };
        settings.SettingsEditing.UpdateRowRouteValues = new { Controller = "MyController", Action = "MyControllerAction2" };
        settings.SettingsEditing.DeleteRowRouteValues = new { Controller = "MyController", Action = "MyControllerAction3" };
        settings.SettingsEditing.Mode = GridViewEditingMode.EditFormAndDisplayRow;
        settings.SettingsBehavior.ConfirmDelete = true;

        settings.CommandColumn.Visible = true;
        settings.CommandColumn.ShowNewButton = true;
        settings.CommandColumn.ShowDeleteButton = true;
        settings.CommandColumn.ShowEditButton = true;

        settings.KeyFieldName = "DurationId";

        settings.SettingsPager.Visible = true;
        settings.SettingsPager.PageSize = 20;
        settings.Settings.ShowGroupPanel = true;
        settings.Settings.ShowFilterRow = true;
        settings.SettingsBehavior.AllowSelectByRowClick = false;
        settings.Columns.Add(column =>
        {
            column.FieldName = "Column1";
            column.ReadOnly = true;
            column.Width = 20;

        });
        settings.Columns.Add(column =>
        {
            column.FieldName = "Column2";
            column.Caption = "xyz";
            column.ColumnType = MVCxGridViewColumnType.ComboBox;
            column.Width = 250;

            var comboBoxProperties = column.PropertiesEdit as ComboBoxProperties;
            comboBoxProperties.DataSource = PMC.Web.Controllers.DurationMasterController.getSelectList("0", "MyAction4");
            comboBoxProperties.TextField = "Text";
            comboBoxProperties.ValueField = "Value";
            comboBoxProperties.ValueType = typeof(int);
            comboBoxProperties.ValidationSettings.RequiredField.IsRequired = true;


        });
        settings.InitNewRow = (sender, e) =>
        {
            e.NewValues["ColumnId"] = 0;
        };
        settings.Columns.Add("ColumnName");
        settings.Columns.Add("Description");
        //settings.Columns.Add("DisplayName");
        settings.Columns.Add(column =>
    {
        column.Caption = "FromDate";
        column.FieldName = "FromDate";
        column.ColumnType = MVCxGridViewColumnType.DateEdit;
        column.ReadOnly = true;
        var DateEditProperties = column.PropertiesEdit as DateEditProperties;
        column.CellStyle.Wrap = DefaultBoolean.False;
    });



    settings.Columns.Add(column =>
    {
        column.Caption = "ToDate";
        column.FieldName = "ToDate";

        column.ColumnType = MVCxGridViewColumnType.DateEdit;
        var DateEditProperties = column.PropertiesEdit as DateEditProperties;
        column.CellStyle.Wrap = DefaultBoolean.False;
    });
    });
    if (ViewData["EditError"] != null)
    {
        grid.SetEditErrorText((string)ViewData["EditError"]);
    }

}
@grid.Bind(Model).GetHtml()  

这就是我尝试过的

settings.CellEditorInitialize += (s, e) =>
        {
            var abc = s as ASPxGridView;
            e.Editor.ReadOnly = !abc.IsNewRowEditing;
        };

这将所有网格列设置为只读,而我只需要 fromDate 列为 readonly

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

相反,您可以在所需的列上使用 CellEditorInitialize 事件

settings.CellEditorInitialize += (s, e) =>
{
    var abc = s as ASPxGridView;
    if (e.Column.FieldName == "YourFieldName")
        e.Editor.ReadOnly = !abc.IsNewRowEditing;
};

关于asp.net-mvc - 在特定列而不是整个网格上使用 settings.CellEditorInitialize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38842591/

相关文章:

asp.net-mvc - 最终用户使用Adobe Contribute之类的工具对ASP.Net MVC View 内容进行编辑

asp.net-mvc-4 - Asp.net MVC4,在unitofwork中调用dispose()

javascript - jQuery AJAX 发布到 MVC Controller 对象——请求显示为空

asp.net-mvc-4 - 如何删除 MVC4 中的必需属性,尽管在模型中已要求

c# - 如何将图像和项目添加到 imageComboBoxEdit

c# - 根据条件更改行的颜色

mysql - 为什么asp.net网站管理工具会提示超时信息(mysql db)?

c# - 复用存储在Viewbag中的变量,性能? (回收 Viewbags)

Delphi QuantumGrid - rowChanged 事件?

javascript - 特殊字符转html代码C#