代码之家  ›  专栏  ›  技术社区  ›  JeeShen Lee

KendoUI ForeignKey列的自定义编辑器模板

  •  0
  • JeeShen Lee  · 技术社区  · 11 年前

    我正在使用KendoUI ASP Wrapper,我需要帮助将“ActivityCodeID”的默认ForeignKey编辑器更改为AutoComplete。我该怎么改?

    @(Html.Kendo().Grid<TimeEntry>()
        .Name("grid-timeentry-project")
        .DataSource(datasource => datasource.Ajax()
            .Model(model =>
                        {
                            model.Id(record => record.TimeEntryID);
                            model.Field(f => f.TimeSheetID).DefaultValue(0);
                            model.Field(f => f.TimeEntryTypeID).DefaultValue(ViewBag.ProjectTimeEntryTypeId);
                            model.Field(f => f.ActivityCodeID);
                            model.Field(f => f.Description);
                            model.Field(f => f.Duration);
                            model.Field(f => f.DateAdded);                     
                        })
            .Read(read => read.Action("GetProjectTimeEntries", "TimeEntry"))
        )
        .Columns(columns =>
                     {
                         columns.Bound(r => r.TimeEntryID).Hidden(true);
                         columns.Bound(r => r.TimeSheetID).Hidden(true);
                         columns.Bound(r => r.TimeEntryTypeID).Hidden(true);
                         columns.ForeignKey(r => r.ActivityCodeID, (System.Collections.IEnumerable)ViewData["AllActivityCodes"], "ActivityCodeID", "ActivityCode1").Title("ActivityCode");                                         
                         columns.Bound(r => r.Description);
                         columns.Bound(r => r.Duration).Title("Duration (s)");
                         columns.Command(command => { command.Edit(); command.Destroy(); }).Width(170);
                     })
          )
    

    我试图修改EF模型的DataAnnotation并声明EditorTemplate,但它仍然使用默认的“GridForeignKey”编辑器模板。

    这是我的EF。

    [MetadataType(typeof(TimeEntryMetaData))]
    public partial class TimeEntry
    {
    }
    
    public class TimeEntryMetaData
    {
        [UIHint("ActivityCodeIDEditor")]
        public int ActivityCodeID { get; set; }
    }
    

    这是我的“ActivityCodeIDEditor”编辑器模板。我无法获得“asdf”,因此假设编辑器模板未被考虑。

        @model object
    <span>asdf</span>
    @*@(
     Html.Kendo().DropDownListFor(m => m)        
            .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
    

    请帮忙。谢谢 )*@

    1 回复  |  直到 11 年前
        1
  •  4
  •   Petur Subev    11 年前

    有一种特殊的列方法,可以指定编辑器模板的名称。尝试

    columns.bound(x=>x.some).EditorTemplateName("foo");