最近在做的一個項目,用到了mini-ui,之前只是聽說過沒咋用過,沒辦法項目來了,現學現用吧!
一直都參考着API挺順利的,但是在一個場合發生了個奇怪的問題,值得深究。
看如下界面:
<tr>
<span style="white-space:pre"> </span><th><label for="zycd">負責人:</label></th>
<td><input style="width:98%" id="simpleAssignment" name="monitorUid" class="mini-combobox"
textField="text" valueField="id" showNullItem="true" onvaluechanged="setAssignment"
url="/Domain/DynamicAjax.do?serviceUrl=pmbase_ProjectServiceImpl/getProjectMembers/$pid"/>
</td>
</tr>
<tr style="display:true" >
<td width="10%">
<label>參與人<font color="red">*</font>:</label><br>
<a class="mini-button" iconCls="icon-add" οnclick="addRow('Assignment')" plain="true">增加</a>
<a class="mini-button" iconCls="icon-remove" οnclick="removeRow('Assignment')" plain="true">刪除</a>
</td>
<td colspan="3" width="80%">
<div id="Assignment" name="Assignment" class="mini-datagrid" style="width:99%;height:200px" idField="id"
allowResize="false" allowCellEdit="true" allowCellSelect="true" multiSelect="false" pageSize="20" showFooter="false"
oncellendedit="assignmentEndEdit" oncellcommitedit="assignmentEndEdit" >
<div property="columns">
<div field="assignmentUid" name ="assignmentUid" vtype="require" type="comboboxcolumn" headerAlign="center" allowSort="false">資源
<input property="editor" class="mini-combobox" style="width:100%;"
url="/Domain/DynamicAjax.do?serviceUrl=pmbase_ProjectServiceImpl/getProjectMembers/$pid" />
</div>
<div field="units" vtype="require" allowSort="true" >工作量(工時)
<input property="editor" class="mini-spinner" minValue="1" maxValue="10000" style="width:100%;" />
</div>
<div field="assignmentNotes" headerAlign="center" allowSort="false">任務描述
<input property="editor" class="mini-textarea" style="width:100%;" minHeight="120"/>
</div>
<div field="isfzr" id="isfzr" type="checkboxcolumn" headerAlign="center" >負責人
</div>
</div>
</div>
</td>
</tr>
Name | EventObject | Description |
---|---|---|
columnschanged | 列改變時激發。如列顯示/隱藏、列寬調整、列增加/刪除等情況。 | |
rowclick |
{ sender: Object, //表格對象 record: Object //行對象 } |
行點擊時發生 |
rowdblclick |
{ sender: Object, //表格對象 record: Object //行對象 } |
行雙擊時發生 |
rowmousedown |
{ sender: Object, //表格對象 record: Object //行對象 } |
行鼠標按下時發生 |
cellclick |
{ sender: Object, //表格對象 record: Object, //行對象 column: Object //列對象 } |
單元格點擊時發生 |
cellmousedown |
{ sender: Object, //表格對象 record: Object, //行對象 column: Object //列對象 } |
單元格鼠標按下時發生 |
headercellclick |
{ sender: Object, //表格對象 column: Object //列對象 } |
表頭單元格點擊時發生 |
headercellmousedown |
{ sender: Object, //表格對象 column: Object //列對象 } |
表頭單元格鼠標按下時發生 |
headercellcontextmenu |
{ sender: Object, //表格對象 column: Object //列對象 } |
表頭單元格點擊右鍵時發生 |
beforeload |
{ sender: Object, //表格對象 data: Object //參數對象 cancel: Boolean } |
數據加載前發生 |
preload | 數據加載,設置到Grid前發生 | |
loaderror |
{ sender: Object, //表格對象 xhr: Object, //ajax對象 errorMsg: String //錯誤信息 errorCode: int //錯誤碼 } |
數據加載錯誤時發生 |
load |
{ sender: Object, //表格對象 xhr: Object, //ajax對象 data: Array //數據 } |
數據加載成功時發生 |
update | 表格渲染完畢事件 | |
drawcell |
{ sender: Object, rowIndex: Number, columnIndex: Number, record: Object, column: Object, field: String, value: String, cellHtml: "", rowCls: "", cellCls: "", rowStyle: "", cellStyle: "" } |
繪製單元格時發生 |
cellbeginedit |
{ sender: Object, rowIndex: Number, record: Object, column: Object, field: String, editor: Object, value: String, cancel: false } |
編輯開始前發生 |
cellcommitedit |
{ sender: Object, rowIndex: Number, record: Object, column: Object, field: String, editor: Object, oldValue: Object, value: Object, cancel: false } |
編輯值提交前發生 |
cellendedit |
{ sender: Object, rowIndex: Number, record: Object, column: Object, field: String, editor: Object, value: String } |
編輯結束時發生 |
celleditenter |
{ sender: Object, record: Object } |
編輯器按回車時發生 |
selectionchanged | 行選擇改變時發生 | |
beforeselect |
{ sender: Object, record: Object, cancel: Boolean } |
行選中前發生 |
beforedeselect |
{ sender: Object, record: Object, cancel: Boolean } |
行取消選中前發生 |
select |
{ sender: Object, record: Object } |
行選中時發生 |
deselect |
{ sender: Object, record: Object } |
行取消選中時發生 |
cellvalidation |
{ sender: Object, record: Object, column: Object, field: String, value: String, isValid: Boolean, //是否驗證通過 errorText: "" //錯誤提示文本 } |
單元格驗證時發生(一般在單元格編輯結束時) |
drawsummarycell |
{ sender: Object, result: Object, //服務端返回的原始數據對象 records: Array, //行數組 column: Object, field: String, value: String, cellHtml: "", cellCls: "", cellStyle: "" } |
繪製彙總單元格事件 |
resize | 表格拖拽調節尺寸時發生 |
只有cellcommitedit,cellmousedown僅僅幾個可以監聽到checkboxcolumn的點擊修改。
在處理這個列表時,由於需求是選擇了負責人,上面的負責人進行聯動改變,起初採用了var data = mini.get('Assignment').data;方法來獲取列表的現在值,但有個問題,是這個方法獲取到的永遠都是點擊按鈕之前的列表值,並不能實時的獲取到點擊後列表的值。於是在朋友的幫助下,小弟可算找到方法,既可以點擊監聽又可以聯動改變的方法。
assignmentEndEdit = function(e) {
var grid = mini.get('Assignment');
if(e.field == 'isfzr'){
var fuzerenId;
if(e.value){
mini.get("simpleAssignment").setValue(e.row.assignmentUid);
}
}
}
看來,js中e的妙用還是需要你我來共同掌握的呀!