검도 mvc 면도칼을 사용하고 있습니다.kendo mvc 면도칼의 인라인 편집, 드롭 다운을 통해 고유 한 매개 변수를 보내는 방법 Editor 메서드를 호출하는 동안 템플릿
버전 : 2015.1408.545.
인라인 편집 기능을 제공하고 있습니다. 그것들은 드롭 다운을 가지고있는 하나의 칼럼이고 이것과 같은 템플릿을 위해 편집기를 통해 묶여 있습니다.
@(Html.Kendo().DropDownList()
.Name("ParentGraphicsCategoryID").HtmlAttributes(new { @style = "font-size:12px", id = "ParentGraphicsCategoryID" })
.DataTextField("Text")
.OptionLabel("- Select Parent Graphic Category - ")
.DataValueField("Value")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetGraphicCategories", "CommonLookUp");
});
}))
문제는 어떻게 위의 코드에서 "GetGraphicCategories"액션 메소드를 호출하는 동안, 모든 행에 대해 고유 ID와 같은 추가 매개 변수를 전달하는 데? 이 링크를 따라
: http://www.telerik.com/forums/pass-grid-view-model-data-to-editor-template 그것은 위의 URL의 코드에 suggeted됩니다@(Html.Kendo().DropDownList()
.Name("ParentGraphicsCategoryID").HtmlAttributes(new { @style = "font-size:12px", id = "ParentGraphicsCategoryID" })
.DataTextField("Text")
.OptionLabel("- Select Parent Graphic Category - ")
.DataValueField("Value")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetGraphicCategories", "CommonLookUp").Data("getParentID()");
});
}))
function getParentID() {
var row = $(event.srcElement).closest("tr");
var grid = $(event.srcElement).closest("[data-role=grid]").data("kendoGrid");
var dataItem = grid.dataItem(row);
//where the OrderID is the model ID
return { statusId: dataItem.StatusId } }
. 그러나 템플릿에 대한 드롭 다운 편집기를 통해 호출되므로 "데이터"메서드에서 "getParentID()"를 호출하는 동안 행 값을 가져올 수 없습니다 .Hen Grid 변수 값은 null입니다.
코드 그리드를 만드는 것은 다음과 같습니다에 대한 : 인라인 편집 모드를 사용하고 있기 때문에
@(Html.Kendo().Grid<GraphicsCategoryModel>()
.Name("GraphicsCategory")
.Columns(columns =>
{
columns.Bound(a => a.GraphicsCategoryName).Title("Graphics Category Name").Width(150);
columns.Bound(a => a.ParentGraphicsCategoryName).EditorTemplateName("ParentGraphicCategoryList").Title("Parent Graphics Category Name").Width(150);
columns.Command(command => { command.Edit(); }).Title("Actions").Width(70);
})
.ToolBar(toolbar => toolbar.Create())
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Pageable(pageable => pageable.Enabled(true))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Events(events => { events.Error("error_handler"); })
.ServerOperation(true)
.Model(model =>
{
model.Id(p => p.GraphicsCategoryID);
model.Field(p => p.GraphicsCategoryID).Editable(false);
})
.Create(update => update.Action("InsertOrUpdateGraphicsCategory", "GraphicsCategories"))
.Update(update => update.Action("InsertOrUpdateGraphicsCategory", "GraphicsCategories"))
.Destroy(update => update.Action("DeleteAdminAreaOwnership", "AdminAreaOwnership"))
.Read(read => { read.Action("GetAllGraphicsCategories", "GraphicsCategories"); read.Type(HttpVerbs.Get); })
).Events(p => p.DataBound("generalColumnBound")))
아직 해결 방법이 없지만 문제가 무엇인지 알고 있습니다 ... 링크 된 예가 InCell 편집을 사용하는 동안 InLine 편집을 사용하고 있습니다. 따라서 getParentID()에서 event.srcElement는 편집 버튼입니다 ... 편집이 시작되면 즉시 제거되고 업데이트/취소 버튼으로 대체됩니다.closest()는 아무것도 반환하지 않습니다 (가장 가까운 것을 아무것도 반환 할 수 없기 때문에). InCell 모드에서 event.srcElement는 DropDownList이므로 .closest()는 예상대로 행/격자를 반환합니다. –