我的项目中有这段特定的代码:
if (type == 1)
{
if (line.StartsWith(user.PadRight(FieldLengths1[0])))
keep = true;
}
else if (type == 2)
{
if (line.StartsWith(user.PadRight(FieldLengths2[0])))
keep = true;
}
最初,缩进是不同的。 else-if应该链接到" if(type == 1)",正如内容所暗示的那样。但Visual Studio似乎已经改变了我的缩进,建议将它链接到下一个if(if(line.startswith ...))
这可能相当于
if (type == 1)
{
if (line.StartsWith(user.PadRight(FieldLengths1[0])))
keep = true;
else if (type == 2)
{
if (line.StartsWith(user.PadRight(FieldLengths2[0])))
keep = true;
}
}
或者对此:
excelExport: function (e) {
if (exportFlag) {
e.sender.showColumn("INS_TYPE");
e.sender.showColumn("ErollementYear");
e.preventDefault();
exportFlag = true;
setTimeout(function () {
e.sender.saveAsExcel();
});
} else {
e.sender.hideColumn(0);
exportFlag = false;
}
}
Here is complete code for binding
var baseUrl = $('base').attr('href');
var gridReadUrl = baseUrl + 'Insurance/GetInsuranceDisputes';
var exportFlag = true;
$(document).ready(function () {
InsuranceGrid.Initialize('#ActiveGrid');
var grid = $("#ActiveGrid").data("kendoGrid");
});
var InsuranceGrid = function () {
var initialize = function () {
var grid = $("#ActiveGrid"); //$('div', container);
var filterOption = {
extra: false,
operators: {
string: {
eq: "Is Equal To",
startswith: "Starts With",
contains: "Contains",
endswith: "Ends With"
}
}
};
var columnOptions = [
{
field: "INS_NO",
title: "INS#",
width: 100,
filterable: true,
editable: false,
locked: true
},
{
field: "INS_TYPE",
title: "Insurance Type",
width: 250,
filterable: false,
hidden: true
},
{
field: "ErollementYear",
title: "EnrollmentYear",
width: 200,
filterable: false,
editable: false,
hidden: true
},
];
var gridOptions = {
toolbar: ["excel"],
excel: {
fileName: "InsuranceList.xlsx",
allPages: true,
filterable: true
},
dataSource: {
error: function (e) {
if (e.errors != false) {
alert("Error:" + e.errors);
grid.one("dataBinding", function (e) {
e.preventDefault(); // cancel grid rebind
});
}
},
transport: {
read: {
url: gridReadUrl,
type: "POST",
complete: function (jqXHR, textStatus) {
//alert('ere');
},
data: function () {
return {};
}
},
},
schema: {
data: "data",
total: "total",
model: {
id: "ID",
fields: {
ID: {
editable: false,
type: "number"
},
INS_NO: {
editable: false,
type: "string"
},
INS_TYPE: {
editable: true,
type: "string"
},
ErollementYear: {
editable: true,
type: "string"
},
}
}
},
serverPaging: true,
serverSorting: true,
serverFiltering: true
}
, dataBound: dataBoundGrid
, columns: columnOptions,
height: 650,
sortable: {
mode: "single",
allowUnsort: false
},
filterable: true,
selectable: true,
change: onChange,
pageable: {
pageSize: 20,
refresh: true,
messages: {
refresh: "Refresh the grid"
}
},
excelExport: function (e) {
if (exportFlag) {
debugger;
e.sender.showColumn("INS_TYPE");
e.sender.showColumn("ErollementYear");
e.preventDefault();
exportFlag = true;
setTimeout(function () {
e.sender.saveAsExcel();
});
} else {
e.sender.hideColumn(0);
exportFlag = false;
}
}
};
var onClose = function () {
};
grid.kendoGrid(gridOptions).delegate("tbody>tr", "dblclick", function (e) { GotoDetailView(e) });
};
var dataBoundGrid = function () {
var grid = new $("#ActiveGrid").data("kendoGrid");
var data = grid.dataSource.data();
$.each(data, function (i, row) {
var INSType = row.INS_TYPE;
if (INSType == "CLOSED") {
$('tr[data-uid="' + row.uid + '"] ').css("background-color", "#990000"); //red
}
else {
$('tr[data-uid="' + row.uid + '"] ').css("background-color", "#ff5c33"); //orange
}
});
};
var refresh = function () {
var grid = $('#ActiveGrid');
if (grid.length < 1) {
return;
}
grid.data("kendoGrid").dataSource.read();
};
return {
Initialize: initialize,
Refresh: refresh,
};
}();
function GotoDetailView(e) {
var grid = $("#ActiveGrid").data("kendoGrid");
window.location = baseUrl + "Details/Index?ID=" + ID;
}
function onChange(e) {
var model = this.dataItem(this.select());
ID = model.ID;
}
我想知道else-if如何表现没有括号,以及究竟是什么决定它会链接到哪个?
答案 0 :(得分:6)
else
关键字始终与最近的if
。
您应该使用大括号来避免这种混淆。
答案 1 :(得分:4)
§8.7.1中的C# 5.0 Language Specification个州
else
部分与词汇最接近的前if
相关联 这是语法所允许的。
答案 2 :(得分:1)
https://msdn.microsoft.com/en-us/library/aa664812(v=vs.71).aspx上的文档说:
pp-conditional: pp-if-section pp-elif-sectionsopt pp-else-sectionopt pp-endif
所以,else关键字与最近的if匹配贪婪。