条件在KendoUI列模板中无法正常工作

时间:2018-09-10 12:53:43

标签: javascript java kendo-grid

我正在通过API获取JSON数据,并使用Kendo UI将其显示在表格中。

$scope.ReportViewGrid = function ReportViewGrid(jsonData) {
  if (jsonData == null) return;

  var fileName = "ReportView";
  var grid = $("#ReportViewGrid").kendoGrid({
    toolbar: [{
      template: "<input type='button' class='k-button' value='Back' onclick='back()' />"
    }],
    editable: false,
    filterable: true,
    resizable: true,
    pageable: {
      pageSize: 10,
      buttonCount: 5
    },
    columns: jsonData.columns,
    dataSource: {
      data: jsonData.children
    },

  }).data("kendoGrid");
}
<div id="ReportViewGrid"></div>


上面的代码完美地显示了数据。网格中有多个列,如下所示:

-----------------
C1 | C2 | C3 | C4
-----------------
v1 | v2 | v3 | v4
x1 | x2 | x3 |
y1 | y2 | y3 |
z1 | z2 | z3 | z4

Column1使用模板进行链接。但是我想在第4列中有值的地方获取链接数据,否则为普通文本。我试过下面的代码,并尝试翻转条件,但是链接总是出现。

...
 if("uName".equalsIgnoreCase(uNameField)){
    template = "#  if (\"#=encodeURI(md5hash)#\".equals(\"\") ) { #"
                    +" <span>#=fileName#</span>"
                    +" # } else{ #"
                    +" <a style=\"cursor: pointer;\" onclick='expand(\"fileDetailForDuplicateFile\",\"#=encodeURI(fileName)#\",\"#=encodeURI(md5hash)#\")'>#=fileName#</a>"
                    +" #} #";
     nodeColumns.setTemplate(template);
 }
 root.addColumns(nodeColumns);
 }
 root.addLinkedColumn("uName");
 Gson gson = new Gson();
 return gson.toJson(root);


有什么我想念的吗?任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

我发现使用data.xx对模板进行检查非常有用,例如:-

    public static void main(String[] args) throws Exception {
        RandomAccessFile raf = new RandomAccessFile("D:\\sample\\file.txt", "r");
        long numSplits = 10;
        long sourceSize = raf.length();
        System.out.println("file length:" + sourceSize);
        long bytesPerSplit = sourceSize / numSplits;
        long remainingBytes = sourceSize % numSplits;

        int maxReadBufferSize = 9 * 1024;

        List<String> filePositionList = new ArrayList<String>();
        long startPosition = 0;
        long endPosition = bytesPerSplit;
        for (int i = 0; i < numSplits; i++) {
            raf.seek(endPosition);
            String strData = raf.readLine();
            if (strData != null) {
                endPosition = endPosition + strData.length();
            }
            String str = startPosition + "|" + endPosition;
            if (sourceSize > endPosition) {
                startPosition = endPosition;
                endPosition = startPosition + bytesPerSplit;
            } else {
                break;
            }
            filePositionList.add(str);
        }

        for (int i = 0; i < filePositionList.size(); i++) {

            String str = filePositionList.get(i);
            String[] strArr = str.split("\\|");
            String strStartPosition = strArr[0];
            String strEndPosition = strArr[1];
            long startPositionFile = Long.parseLong(strStartPosition);
            long endPositionFile = Long.parseLong(strEndPosition);
            MultithreadedSplit objMultithreadedSplit = new MultithreadedSplit(startPositionFile, endPositionFile);
            objMultithreadedSplit.start();
        }

        long endTime = System.currentTimeMillis();

        System.out.println("It took " + (endTime - startTime) + " milliseconds");
    }

}
public class MultithreadedSplit extends Thread {

    public static String filePath = "D:\\tenlakh\\file.txt";
    private int localCounter = 0;
    private long start;
    private long end;
    public static String outPath;

    List<String> result = new ArrayList<String>();

    public MultithreadedSplit(long startPos, long endPos) {
        start = startPos;
        end = endPos;
    }

    @Override
    public void run() {
        try {
            String threadName = Thread.currentThread().getName();

            long currentTime = System.currentTimeMillis();
            RandomAccessFile file = new RandomAccessFile("D:\\sample\\file.txt", "r");  
            String outFile = "out_" + threadName + ".txt";
            System.out.println("Thread Reading started for start:" + start + ";End:" + end+";threadname:"+threadName);
            FileOutputStream out2 = new FileOutputStream("D:\\sample\\" + outFile);
            file.seek(start);
            int nRecordCount = 0;

            char c = (char) file.read();
            StringBuilder objBuilder = new StringBuilder();
            int nCounter = 1;
            while (c != -1) {
                objBuilder.append(c);
                // System.out.println("char-->" + c);
                if (c == '\n') {
                    nRecordCount++;
                    out2.write(objBuilder.toString().getBytes());
                    objBuilder.delete(0, objBuilder.length());
                    //System.out.println("--->" + nRecordCount);
                    //      break;
                }
                c = (char) file.read();
                nCounter++;
                if (nCounter > end) {
                    break;
                }
            }
        } catch (Exception ex) {
           ex.printStackTrace();
        }

    }
}