【问题标题】:Custom Popup Editor not open when grid is empty网格为空时自定义弹出编辑器未打开
【发布时间】:2013-03-01 13:41:50
【问题描述】:

我已经制作了 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>

剑道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");
                }
             }
        });

【问题讨论】:

  • 在没有任何代码示例的情况下很难提供帮助。您能否提供一个 jsFiddle 或代码示例来演示该问题?
  • 您应该提供一些确切的代码,因为我尝试创建一个空网格并打开弹出编辑器。模板看起来如何?你是怎么用的?
  • 请检查上面编辑的问题。我已经把模板和剑道网格的代码。
  • 你能告诉我,如果在控制器中传递它并且如果数据库中没有任何数据,那么如果没有数据,你是否传递空白数组?
  • 但是当我们点击添加按钮时,那时我们不需要数据库中的任何数据。在数据库中添加记录后,我们需要数据库中的数据。所以在创建时需要传递空白数组?

标签: kendo-ui


【解决方案1】:

您的问题中缺少一个信息:您是如何定义数据源的,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(当前值),而不是nullhellogetCountryName 类似。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多