我正在通过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);
有什么我想念的吗?任何帮助都会很棒。
答案 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();
}
}
}