SmartGrid的栏位名称大小写SmartGrid的栏位名称在前台是区分大小写的,在后台(C#)是不区分大小写的。
注意:在下文中出现的"前台",是指在asp.net页面操作数据,即使用javascript来实现的。"后台"是指在cs页面,即使用C#语言来实现的。
SmartGrid设置单元格焦点在asp.net页(前台)可使用focus()跳到焦点
focus(int rowIndex,string colName)。如果rowIndex大于总行数,自动跳到最后一行
使用blur()使单元格失去焦点
服务器端光标定位可使用CurrentRowIndex和CurrentColumnName属性。
例:
This.SmartGrid1.CurrentRowIndex=10;
This.SmartGrid1.CurrentColumnName =”CustomerName”;
(前台)SmartGrid前台栏位取值和赋值getCellValue(int rowIndex,string colName)
setCellValue(int rowIndex,string colName,any value)
(前台)设置具体单元格可否编辑可使用方法enableCell(string colName,bool enable):
在前台调用enableCell()之前需要调用focus()定位到行,调用enableCell()后最好使用blur()使单元格失去焦点,然后调用focus()跳到焦点单元格,这样可否编辑的状态才能立即生效,否则只有离开单元格才重新回来时可否编辑的状态才能生效
例:
var grid = document.getElementById("<%=this.SmartGrid1.ClientID % >");
rid.focus(0, "TaskName");
grid.enableCell("TaskName", false);
grid.blur();
grid.focus(0, "TaskName");
如果要设置某列所有行都不可编辑,可通过设置列的ReadOnly=false来实现
this.SmartGrid1.Columns[colIndex/colName].ReadOnly=false
(前台)SmartGrid行维护操作
(1)
addRow:新增行(末尾新增)
语法:addRow()
新增行后SmartGrid会自动跳到新增的那行的第一个可编辑栏位
(2)
insertRow:插入行(在焦点行前新增)
语法:insertRow()
新增行后SmartGrid会自动跳到新增的那行的第一个可编辑栏位。insertRow()会在焦点行前新增,如果需要在指定行前新增,应先调用focus()跳到指定行,然后调用insertRow(),如果当前SmartGrid没有一行数据,会在末尾新增。
(3)
delRow:删除行(删除焦点行并在删除前提示)
语法:delRow()
删除行后SmartGrid会自动跳到下一行。delRow()会删除焦点行,如果需要删除指定行,应先调用focus()跳到指定行,然后调用delRow()。
删除行前会弹出对话框提示“是否删除选中的数据行”
(4)
delRowa:删除行(删除焦点行但在删除前不提示)
语法:delRowa()
删除行后SmartGrid会自动跳到下一行。delRowa()会删除焦点行,如果需要删除指定行,应先调用focus()跳到指定行,然后调用delRowa()。
(5)
delRowForced:强制删除指定行(删除指定行但在删除前不提示)
语法:delRowForced(int rowIndex)
删除行后SmartGrid会自动跳到下一行。如果rowIndex < 0 或 rowIndex > 总行数 – 1,则不执行删除。
(6)
delRestore:恢复最后删除的行语法:delRestore()
注意只能恢复最后删除的行
调用delRestore()后最好调用focus()跳到恢复的行,这样焦点所在栏位值能立即看到新值,否则看到的是恢复前焦点单元格的值
(7)
clear:删除所有行并且不能恢复语法:clear()
注意必须先调用blur()失去焦点再clear(),否则clear后续操作时会报对象无效错误(BUG)
(8)
fill:删除所有行(clear)后重新填充数据(xml数据)该方法有BUG,后续操作会报对象无效错误,不要使用。
例:
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
var dom = new ActiveXObject("MSXML.DOMDocument");
dom.loadXML("<?xml version='1.0' encoding='gb2312'? ><detail ><row RowNumber='1' TaskCode='TaskCode1' TaskName='TaskName1' TaskType='TaskType1' PlanHours='PlanHours1' PlanBeginDate='PlanBeginDate1' PlanEndDate='PlanEndDate1' / ></detail >");
grid.fill(dom.documentElement)
可以考虑通过DOM操作来实现给栏位赋值
例:
var grid = document.getElementById("<%=SmartGrid1.ClientID % >");
var dom = new ActiveXObject("MSXML.DOMDocument");
dom.loadXML("<?xml version='1.0' encoding='utf-8'? ><detail ><row RowNumber='1' TaskCode='TaskCode1' TaskName='TaskName1' TaskType='TaskType1' PlanHours='PlanHours1' PlanBeginDate='PlanBeginDate1' PlanEndDate='PlanEndDate1' / ></detail >");
var details = dom.getElementsByTagName("detail");
//删除现有数据
grid.blur();
grid.clear();
if (details.length > 0) {
var rows = details[0].getElementsByTagName("row");
for (var i = 0; i < rows.length; i++) {
grid.addRow();
for (var j = 0; j < rows[i].attributes.length; j++) {
grid.focus(i, rows[i].attributes[j].name);
grid.setCellValue(i, rows[i].attributes[j].name, rows[i].attributes[j].value);
}
}
grid.blur();
grid.focus();
}
(9)
append不删除行填充数据(xml数据),与fill相似
该方法有BUG,后续操作会报对象无效错误,不要使用。
(10)与行数有关的属性
rowCount:总行数
row:当前行号
(11)行维护快捷键:Ctrl+I添加行、Ctrl+D删除行、空格进入编辑。