0

我的问题与我的网格更新有关。这是我当前的网格生成程序:

leTle[0] = {index : 1, tle : tleId, nom : nomChamp, estar : "", fige : tleFixe, position : positionParam, longueur : longueurParam};               

   var fige;

   if (tleFixe == "true")
        fige = true; 
   else
        fige = false;

    $("#" + theId).kendoGrid({
        columns:[{
                    field: "index",
                    title: "Index",
                    template: "<span style='font-size: 12px;' title='#= index #'>#= index # </span>",
                    width: 40
                },{
                    field: "tle",
                    title: "TLE Id",
                    template: "<span style='font-size: 12px;' title='#= tle #'>#= tle # </span>",
                    width: 100
                },{
                    field: "nom",
                    title: "Intitulé",
                    template: "<span style='font-size: 12px;' title='#= nom #'>#= nom # </span>"
                },{
                    field : "position",
                    title : "Position",
                    width : 70,
                    attributes : {
                        "class" : fige ? " " : "fondRougePale"
                    }
                },{
                    field : "longueur",
                    title : "Longueur",
                    width : 70,
                    attributes : {
                        "class" : fige ? " " : "fondRougePale"
                    }
                },{
                    field :"estar",
                    title :"Estar",
                    template: "<span class='eStar'><input class='inputeStar' disabled type='text' /> </span>",
                    width : 250
                },{
                    command: {
                        name : "destroy",
                        template: "<a class=\"btn btn-warning btn-mini k-grid-delete\">"
                                + "<i class=\"icon-minus-sign icon-white\"></i></a>"
                    },

                    title: " ",
                    width: 40
                }
        ],
        dataSource: {
          data: leTle,
          schema: {
              model: {
                  fields: {
                      tle: {editable: false},
                      nom: {editable: false},
                      estar: {editable: false},
                      longueur: {editable: fige},
                      position: {editable: fige}
                  }
              }
          }
        },
        editable:  {
            mode: "incell",
            confirmation: false
        },
        scrollable : false
    });

如您所见,如果我的变量“fige”等于 false,我的某些单元格可以被禁用。当我尝试使用手动编写的基本数据源构建网格时,网格还可以。一行接一行,当必须禁用单元格时,它们就是。

不幸的是,当我在构建网格后尝试添加行时,我的变量永远不会包括单元格的设置时间。

这是代码:

var vgrid = $("#tleSelected").data("kendoGrid");
            var datasource = vgrid.dataSource;
            var nbLines = vgrid.dataSource.total();
            //Booleen de test
            if (fige == "true")
                tfige = true; 
            else
                tfige = false;
            var newRecord = { index : nbLines+1, tle : tleId, nom: nomChamp, estar: "", position: position, longueur: longueur, fige: tfige}
            datasource.insert(newRecord);

所以,我处于我的变量很好但新行不是的情况。

您知道这种情况的解决方案,而不是破坏我的网格并在更新数据后重建它们?

非常感谢。

4

2 回答 2

1

这可能不完全是您的答案,但可能会帮助您实现目标。每次网格的数据源更改时,formatMe都会调用该函数,并且它的返回值将显示在网格的单元格中。

function formatMe(data){
    return data + " bla bla";
}

var grid = $("#grid").kendoGrid({
    dataSource: {
        data: createRandomData(50)
    },
    columns: [
        { field: "YourFieldName","template:"#= formatMe(data) #" }]
}).data("kendoGrid");
于 2013-10-24T13:49:12.320 回答
0

最后,我找到了解决此问题的替代解决方案。

变量“fige”是我们选择单元格时允许编辑的变量。我更喜欢制作自己的解决方案,而不是使用 KendoUi。

当我建立“位置”和“longueur”列时:

{
    field : "position",
    title : "Position",
    width : 70,
    template : "<span class='position#= index #' ><input style='width:70px' type='text' value='#= position#' #= readOnly(fige) # /></span>"
},{
    field : "longueur",
    title : "Longueur",
    width : 70,
    template : "<span class='longueur#= index #'><input style='width:70px' type='text' value='#= longueur#' #= readOnly(fige) # /></span>"
}

和 readOnly(fige) 函数:

function readOnly(fige)
{  
    if (fige == "true")
        return "readonly";
    else
        return ""; 
}

由于此功能,我动态地获得了可编辑或不可编辑的单元格。也许它不如 KendoUI 默认解决方案好,但我不认为这个特殊功能是可能的,这要归功于 KendoUI。

于 2013-10-30T11:19:32.163 回答