Kendo网格和mvc编辑器模板

时间:2014-04-02 21:44:12

标签: kendo-ui kendo-grid

我有一个mvc编辑器模板(名为ExpenseTypeEdit),定义如下:

@model ExpenseType
@(Html.Kendo().DropDownListFor(et => et.ExpenseTypeId)
    .OptionLabel("--Please Select--")
    .DataTextField("Description")
    .DataValueField("ExpenseTypeId")
    .DataSource(datasource => datasource
        .Read("GetExpenseTypeList", "Lookup", new { area = "" })
    )
    .HtmlAttributes(new { width = "98%" })   
)

我有一个看起来像这样的剑道网格:

@(Html.Kendo().Grid<ExpenseViewModel>()
    .Name("ExpenseGrid")
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .Columns(columns =>
    {
        columns.Bound(e => e.ExpenseType)
            .EditorTemplateName("ExpenseTypeEdit");         
        columns.Command(command =>
            {               
                command.Custom("SaveExpense").Click("SaveExpense_click").Text("Save");              
            }
        );
    })
    .DataSource(datasource => datasource.Ajax()
        .ServerOperation(false)
        .Model(model =>
        {
            model.Id(i => i.ExpenseId);
            model.Field(f => f.ExpenseType)
                .DefaultValue(new Solutions.Business.Entities.PrimitiveObjects.ExpenseType { ExpenseTypeId = 0, Description = "" });
        })          
    )
)

SaveExpense_click函数如下所示:

function SaveExpense_click(e) {
    var item = this.dataItem($(e.currentTarget).closest("tr"));     

    /*
        Variable 'item' looks like like:

        {
            ExpenseType: {
                ExpenseTypeId: 4,
                Description: ""
            }           
        }   
    */  
    //debugger;
};

ExpenseTypeId 存在但不是描述。为什么项目没有从下拉列表中获取描述,我需要做什么才能将其传入?

1 个答案:

答案 0 :(得分:0)

您无法获得DDL服务器端的描述,您只能获取该值。您可以获取值,然后从数据库中检索文本,或者您可以使用组合框控件,然后您将能够同时获取值和文本。

如果是这样的话,请注意你的尝试让它成为客户端。

$("#ExpenseTypeId").text()应该可行,根据您的示例item.text()可能有效