1
사용자 지정 개체를 사용하는 표시 템플릿이 포함 된 검도 그리드가 있습니다. 그룹화 및 정렬을 허용하기 위해 IComparable을 구현했지만 필터링 기능을 작동 시키려면 무엇을해야하는지 잘 모르겠습니다. 그대로, 열에 대한 필터 단추를 클릭하면 일반적으로 '포함, 시작, 같음'및 일반적으로 표시되는 옵션 대신 빈 드롭 다운이 나타납니다. 나는 ToDataSourceResult을 사용하여 결과를 조작하고 있습니다.사용자 지정 개체에서 검도 그리드 필터링
모델 :
public class LEAProgramMap
{
public string entity_program { get; set; }
[UIHint("ProgramEditor")]
public ProgramDDL program_desc { get; set; }
}
드롭 다운 :
public class ProgramDDL : IComparable
{
public short program_id { get; set; }
public string entity_program { get; set; }
public string program_desc { get; set; }
public int CompareTo(object obj)
{
if (obj is ProgramDDL)
{
ProgramDDL rev2 = (ProgramDDL)obj;
return program_desc.CompareTo(rev2.program_desc);
}
else
throw new ArgumentException("Object is not a ProgramDDL");
}
}
하고 뷰 :
@model IEnumerable<Datamart.Models.ViewModels.LEAProgramMap>
@{
ViewBag.Title = "CreateProgramMap";
var snapshot = Session["snapshot_id"] ?? Request.Params["snapshot_id"];
}
<h2>CreateProgramMap</h2>
@(Html.Kendo().Grid(Model)
.Name("Programs")
.Columns(cols =>
{
cols.Bound(p => p.entity_program).ClientTemplate("#=entity_program#");
cols.Bound(p => p.program_desc).ClientTemplate("#=program_desc.program_desc#");
})
.ToolBar(commands =>
{
commands.Save();
})
.Editable(edit => edit.Enabled(true).Mode(GridEditMode.InCell))
.DataSource(ds => ds
.Ajax()
.Model(model =>
{
model.Id(p => p.entity_program);
model.Field(p => p.entity_program).Editable(false);
})
// Configure RU -->
.Read(read => read.Action("Program_Read", "Draft").Data("additionalData"))
.Update(update => update.Action("Program_Update", "Draft").Data("additionalData"))
//.ServerOperation(false)
.Batch(true)
.Events(events => events
//.Change("onChange")
.Error("onError")
)
)
// <-- Configure RU
.Pageable(page => page.PageSizes(new int[] { 10, 25, 50, 100 }).Enabled(true))
.Groupable(group => group.Enabled(true))
.Filterable(filter => filter.Enabled(true).Extra(true))
.Sortable(sort => sort.Enabled(true).SortMode(GridSortMode.SingleColumn).AllowUnsort(true))
.Navigatable(nav => nav.Enabled(true))
.Resizable(resizing => resizing.Columns(true))
.Reorderable(reorder => reorder.Columns(true))
)
<script>
function additionalData() {
return {
snapshot_id: "@snapshot"
};
}
function onError(e, status) {
if (e.errors) {
var message = "The following errors have occurred:\n";
$.each(e.errors, function (key, value) {
if (value.errors) {
message += value.errors.join("\n");
}
});
alert(message);
}
}
function onChange() {
var grid = $("#Programs").data("kendoGrid");
grid.dataSource.read();
}
</script>
그래서 현재 필터링을 제외한 모든 것에 내 현재보기 모델을 사용할 수 있습니까? 기능 요청을 추가해야 할 것입니다. 사용자 정의 리졸버에서 모든 기능을 구현할 수있는 중요한 기능이라면 이상한 것처럼 보입니다. 클라이언트가 그다지 중요하지 않다고 생각한다면 이제는 그리드 바깥에서 검색을 추가 할 것입니다. 릴리스 이후 더 우아한 솔루션을 찾아 보겠습니다. – Elsimer
처음으로 검도 UI보기 모델이 완전히 평평해야한다는 사실을 우연히 발견했을 때 정렬을 적용하려고 할 때 모형 바인딩이 올바르게 표시되어 데이터를 표시 할 수있는 것 같습니다. DataSourceResult (필터, 정렬, 그룹화 등)를 사용하여 아무 일도하지 않으면 예상치 못한 결과가 나타나는 것으로 보입니다. – SimonGates
나는 IComparable을 구현 한 후에 Kendo에서 복잡한 클래스로 정렬 할 수있었습니다. 템플릿을 사용하고 있기 때문에 그룹화가 가능합니까? – Elsimer