网格为空时,自定义弹出编辑器不会打开

时间:2013-03-01 13:41:51

标签: kendo-ui

我已经制作了html模板,我在弹出式编辑器中使用该模板。如果我在网格中至少有一条记录,那么它将完美但如果网格中没有数据则点击添加按钮然后自定义弹出编辑器将没有打开。没有给出错误但弹出编辑器没有打开。所以有人知道这个问题的解决方案吗?在此先感谢。 的修改 这是我用过的模板。

<script id="teamEditorTemplate" type="text/x-kendo-template">
    <form  method="POST">
 <table>
            <tr>
                <td><div >
                        Area Prefix:                
                    </div></td>
                <td><div>
                        <input name="area_prefix" class="k-input k-textbox" style="text-align: left" id="area_prefix" required  validationMessage="Please Enter Area Prefix"/>                        
                    </div></td>
            </tr>
             <tr>
                <td><div >
                        Area Name:                
                    </div></td>
                <td><div>
                        <input name="area_name" class="k-input k-textbox" style="text-align: left" id="area_name" required  validationMessage="Please Enter Area Name"/>                        
                    </div></td>
            </tr>
             <tr>
                <td><div >
                        Source:                
                    </div></td>
                <td><div>
                        <input name="source" style="text-align: left" id="source" required  validationMessage="Please Select Source"/>                        
                    </div></td>
            </tr>
             <tr>
                <td><div >
                        Country Name:                
                    </div></td>
                <td><div>
                        <input name="vox_country_id" style="text-align: left" id="vox_country_id" required  validationMessage="Please Select Country"/>                        
                    </div></td>
            </tr>

   </table>
    </form>    
</script>

kendo ui代码在这里

$("#grid").kendoGrid({
            dataSource: dataSource,
           pageSize: 10,
             serverPaging: true,
            serverSorting: true,
            sortable:true,
                pageable: { 
                            refresh: true,
                             pageSizes:[10,20,50,100]
                        },
            height: 400,
            toolbar: [{ name: "create", text: "Add New Area" }],
            columns: [
                { field:"area_prefix", title: "Area Prefix",width:70 },
                { field: "area_name", title:"Area Name",width:90},
                { field: "source", title:"Source",width:70, template: '#= getsourceName(source) #'},
                 { field: "vox_country_id", width:70,template: '#= getCountryName(vox_country_id) #'},
                { command: ["edit", "destroy"], title: "Action",width:53}],
            editable: {
                mode: "popup",            
                template: $("#teamEditorTemplate").html(),
                update: true,  
                add:true,
                destroy: true,

                confirmation: "Are you sure you want to remove ?"
            },
            edit: function(e) {
                if(!e.model.id){
                    $(e.container).parent().find('.k-window-title').html("Add Area Details");
                    $(e.container).parent().find('.k-grid-update').html("Save");
                }
             }
        });

1 个答案:

答案 0 :(得分:0)

您的问题中缺少一条信息:您是如何定义数据源的?getsourceNamegetCountryName是什么。

尝试重现您的问题,我写的是DataSource如下:

var dataSource = new kendo.data.DataSource({
    data  : [],
    schema: {
        model: {
            id            : "id",
            fields        : {
                area_prefix   : { type: "string" },
                area_name     : { type: "string" },
                source        : { type: "string" },
                vox_country_id: { type: "string" }
            },
            getsourceName : function (d) {
                d = d || "hello";
                return d;
            },
            getCountryName: function (d) {
                d = d || "bye";
                return d;
            }
        }
    }
});

getsourceName如果已定义,则返回d(当前值),而不是nullhello。类似于getCountryName

当你添加一条记录时,没有以前的值,很可能会抛出一些错误而无法打开弹出窗口。

但是如果方便地检查null,那么它应该可以正常工作。

请在此处查看我与您的代码放在一起的示例:http://jsfiddle.net/OnaBai/wcZ3L/