Как установить значение по умолчанию для нулевого типа в Kendo UI asp net MVC - PullRequest
0 голосов
/ 29 января 2020

Я использую сетку Kendo UI ASP NET MVC и хочу установить значение по умолчанию в разделе Модель для типа NULL (например, строки), как показано ниже

@(Html.Kendo().Grid(Model.Comments)
              .Name("...")
              .DefaultSettings()
              .Columns(columns =>
              {
                  columns.Bound(c => c.JobId).Width("12%");
                  columns.Bound(c => c.ChangeDate).Width("15%");
                  columns.Bound(c => c.ChangeUserName).Width("12%");
                  columns.Bound(c => c.ProjectRole).Width("12%");
                  columns.Bound(c => c.Text).Width("18%");
              })
              .AddActionsByPermissions(new[]
              {
                  ...
              })
              .Editable(editable => editable.Mode(GridEditMode.InLine))
              .Sortable()
              .Resizable(resize => resize.Columns(true))
              .Selectable()
              .Scrollable(src => src.Height("auto"))
              .Pageable(p => p.PageSizes(new[] { 10 }).PageSizes(false))
              .Events(e =>
              {
                  e.Change("projectCommentsModule.onRowSelect");
                  e.DataBinding("projectCommentsModule.onGridDataBinding");
              })
              .DataSource(dataSource => dataSource
                  .Ajax()
                  .ServerOperation(false)
                  .Read("Commentss", "ProjectComments")
                  .Model(m =>
                  {
                      m.Id(d => d.Id);
                      m.Field(d => d.ChangeDate).Editable(false).DefaultValue(DateTime.Now);
                      m.Field(d => d.ChangeUserName).DefaultValue(Model.CurrentUserProjectRole).Editable(false);
                      m.Field(d => d.ProjectRole).Editable(false).DefaultValue(Model.CurrentUserName);
                      m.Field(d => d.ProjectNumber).Editable(false).DefaultValue(Model.ProjectNumber);
                      m.Field(d => d.JobId).DefaultValue(0);
                  })
                  .Sort(s => s.Add(c => c.ChangeDate).Descending())
                  .Create(create => create.Action("AddComment", "ProjectComments"))
                  .Update(create => create.Action("UpdateComment", "ProjectComments"))
              )
        )

Но для NULL. Тип это не устанавливает, поэтому, когда я сохраняю запись, я получаю на сервере нулевое значение, но мне нужно получить, например, «SomeName», как я могу это исправить?

1 Ответ

1 голос
/ 29 января 2020

Прямо сейчас, я думаю, что это немного ошибка в интерфейсе Kendo. По состоянию на июль 2019 года, я обнаружил это в блоге Telerik:

Я боюсь, что в нашем последнем официальном релизе мы представили ошибку регрессии, которая влияет на применение значений по умолчанию к некоторым полям (в этом case string тип полей).

Они дали это в качестве обходного решения, и я думаю, что вы можете использовать его здесь. Добавьте событие типа BeforeEdit, например, так:

.Events(e=>e.BeforeEdit("onBeforeEdit"))
<script>
    function onBeforeEdit(e) {
      if(e.model.isNew()){
        e.model.YourField = "SomeName";
      }
    }
</script>

Тогда вы, очевидно, измените имя и значение поля на то, что вам нужно.

...