JqGrid之單元格編輯後儲存-yellowcong
在JqGrid中,提供了關於單元格編輯的函式,但是有些官網是沒有講到的,這裡總結一下
1、afterSaveCell:function(rowid,name,val,iRow,iCol)
,
2、beforeEditCell:function(rowid,cellname,value,iRow,iCol)
beforeSaveCell:function(rowid,cellname,value,iRow,iCol)
3、$("#grid").jqGrid("saveCell",iRow,iCol);
4、$("#grid").jqGrid("restoreCell",rowid,iCol);
5、
$("#grid").jqGrid('setCell', rowid, iCol, '', 'not-editable-cell');
需要注意一點,rowid是字串,不是int型別資料,這個坑,本寶寶表示以踩
但是在API中,並沒有詳細的說明,這寫函式在Grid的單元格編輯中,是比較的重要的,可以控制輸入的資料類容和格式
beforeEditCell事件
在編輯前做處理
beforeEditCell:function(rowid, //行id
cellname, //單元格名稱
value,//單元格值 ,在編輯前的預設值
iRow, //行的index
iCol)//列的index
beforeSaveCell 事件
在儲存之前處理,用來判斷邏輯,做對話方塊等操作
beforeSaveCell :function(rowid, //行id
cellname, //單元格名稱
value,//單元格值 ,在編輯前的預設值
iRow, //行的index
iCol)//列的index
afterSaveCell事件
我們可以在afterSaveCell事件中,做判斷,處理需要處理和操作的資料,比如判斷資料的格式,長度等問題
格式化資料
afterSaveCell:function(rowid,//行id
name,//單元格名稱
val,//單元格值 ,編輯後的值
iRow,//行的index
iCol)//列的index
saveCell 函式
當我們的資料更改後,在grid的元資料還是沒有變更的,需要通過這個方法,來修改元資料,這樣可以通過getRowData和getLocalRow兩個方法獲取到資料了
//用於儲存我們編輯後的單元格的資料
$("#grid").jqGrid("saveCell",
iRow, //行
iCol);//列
restoreCell函式
恢復Cell,當更改的資料不是自己想要的,就需要將資料做回滾操作
//恢復cell
$("#grid").jqGrid("restoreCell",
rowid,//行index
iCol)//列index
setCell函式
在需求中,我們也可以自己設定單元格里面的資料,這樣就不需要恢復資料了
#設定單元格資料
$("#gridRakuData").jqGrid('setCell',
rowid,//行
iCol,//列index
'test'); //設定的值
//設定表格可編輯的狀態 1、刪除not-editable-cell 樣式,2、設定edit-cell 樣式
$('#gridRakuData #'+rowid+' td[aria-describedby="gridRakuData_kngaku'+strBiddingNo+'"]').removeClass('not-editable-cell');
$("#gridRakuData").jqGrid('setCell', rowid, iCol, '', 'edit-cell');
//設定表格不可以編輯
$("#gridRakuData").jqGrid('setCell', rowid, iCol, '', 'not-editable-cell');
例子
這個例子中,控制的是單元格可編輯,不能入力小數,入力了提示對話方塊的操作
$("#gbox_gridRakuData").remove();
$("#wfgm1070RakuData").append("<table id='gridRakuData'></table>");
$('#gridRakuData').jqGrid({
formatter : {
integer : {thousandsSeparator: ",", defaultValue: ""},
},
data: dataList,
datatype:"local",
multiboxonly:true,
cellEdit:girdEditDistable, //CELL EDIT ABLE
cellsubmit:'clientArray',
colNames:colNames,
colModel:colModel,
width:gridWidth,
height:gridHeight,
scrollOffset:0,
rowNum:dataList.length,
regional:'ja',
beforeSelectRow: function(rowid, event){
},
onSelectRow: function(id) {
},
onCellSelect:function(rowid,iCol,cellcontent,event){
//札回數
var strBiddingNo = $("#kaisu").val().substring($("#kaisu").val().length-1) ;
if(strBiddingNo != undefined){
if((iCol-2) == strBiddingNo ||iCol == 14 ){
$('#gridRakuData #'+rowid+' td[aria-describedby="gridRakuData_kngaku'+strBiddingNo+'"]').removeClass('not-editable-cell');
$("#gridRakuData").jqGrid('setCell', rowid, iCol, '', 'edit-cell');
}else{
$("#gridRakuData").jqGrid('setCell', rowid, iCol, '', 'not-editable-cell');
}
}
//CLEAR STYLE
var rowIds = $("#gridRakuData").jqGrid('getDataIDs');
for(var row =0;row<rowIds.length;row++){
var rowId = rowIds[row];
for(var col=C_MIN_BIDDING;col<=C_MAX_BIDDING;col++){
$('#gridRakuData #'+rowId+' td[aria-describedby="gridRakuData_kngaku'+col+'"]').removeClass("ui-state-highlight");
}
}
},beforeEditCell:function(rowid,cellname,value,iRow,iCol){
var kinGakuIndex = iCol-2;
},afterSaveCell:function(rowid,name,val,iRow,iCol){
var kinGakuIndex = iCol-2;
var numberRegx = /^[0-9]+$/;
if (numberRegx.test(val)) {
if(kinGakuIndex>=C_MIN_BIDDING && kinGakuIndex<=C_MAX_BIDDING){
if(val.length >12){
sofia.ui.showDialogJsMsg("E", "文字數を超過しています。");
$("#gridRakuData").jqGrid("restoreCell",rowid,iCol);
return false;
}
}
}
if(name == "kiji" && val.length >100){
sofia.ui.showDialogJsMsg("E", "文字數を超過しています。");
$("#gridRakuData").jqGrid("restoreCell",rowid,iCol);
return false;
}
//12.22
var numberSamllRegx = /^[0-9]+\.[0-9]*$/;
if(numberSamllRegx.test(val)){
$("#gridRakuData").jqGrid("restoreCell",rowid,iCol);
return false;
}
},loadComplete(xhr){
//GRID のcheckbox設定
initGridCheckBox();
}
});
//設定checkbox只可以點選一個,grid的checkbox像radio使用
function initGridCheckBox(){
$("#gridRakuData input[type='checkbox']").click(function(e){
var $obj =$(this);
if($obj.is(':checked')){
$("#gridRakuData input[type='checkbox']").each(function(){
$(this).attr("checked",false);
});
$obj.prop("checked","checked");
}
});
}
相關推薦
JqGrid之單元格編輯後儲存-yellowcong
在JqGrid中,提供了關於單元格編輯的函式,但是有些官網是沒有講到的,這裡總結一下 1、afterSaveCell:function(rowid,name,val,iRow,iCol), 2、beforeEditCell:function(rowid,ce
Extjs4 之單元格編輯 獲取列的物件
獲取列物件 grid.getHeaderAtIndex(columnIndex); 獲取類的dataIndex,text var fieldName = grid.getHeaderAtInd
Jqgrid外掛實現單元格編輯,以及彈出選擇資料後賦值。
這段時間因為做了個erp系統,要求能實現表格內編輯資料儲存,於是採用了文件非常坑的jqgrid。 不多廢話,跳過前戲。 過程中遇到如下幾個坑: 1、儲存的時候最後編輯的行資料無法儲存; 2、自定義單元格中彈出一個選擇框的資料後,用setRowData賦值
jqGrid編輯—單元格編輯【附視訊、ppt、原始碼】
這篇部落格主要介紹jqGrid,jqGrid是jquery的一個表格外掛,主要講解的內容是jqGrid的編輯功能—單元格編輯功能介紹。 為了方便記錄,上傳了錄製的視訊,其中視訊的內容與ppt相對應,同時視訊中的
jqGrid設定單元格為不可編輯狀態&¬-editable-cell
要求:設定單元不可編輯。 onCellSelect: function(rowid, iCol, cellcontent, e) { if(cellcontent !=" " ){ //$("#gridGyoumuK
jqGrid 單元格編輯 自定義下拉選擇框 動態資料來源 通用實現
jqGrid編輯型別可分為:單元格編輯(Cell editing)、行內編輯(Inline editing)和表單編輯(Form editing),本文討論單元格編輯模式下,下拉選擇框的通用實現。jqGrid自帶下拉選擇框編輯型別,只要設定edittype='select’並設定editop
jqGrid 單元格編輯 如何手動結束編輯、重置單元格編輯狀態 getChangedCells獲取不到資料處理
在上篇博文:jqGrid 單元格編輯 自定義下拉選擇框 動態資料來源 通用實現,討論瞭如何用custom edittype實現一個通用的下拉選擇框編輯方案,本文討論的是單元格編輯的另外兩個問題:如何手動結束編輯和如何重置編輯狀態。 1、基於單元格編輯常見使用流程 1)構建jqgrid
jqGrid單元格編輯配置,事件及方法
要使用單元格編輯模組,你需要在下載頁面勾選Cell editing 和 Common這2個功能,然後再點選 Download 下載按鈕下載jqGrid。下載地址:http://www.trirand.com/blog/?page_id=6 要看元代可以從src目錄中找到 grid.celledit.js
jqgrid設定單元格可編輯
1 在單元格的屬性列設定為editable。 2 點選編輯按鈕的時候,觸發某一行設定為edit的狀態。 jQuery("#rowed4").jqGrid({ url:'server.php?q=2', datatype: "json", colNames
jqGrid顯示資料,屬性,多重表頭,子表,行編輯,單元格編輯等 基本
第一次發帖 可能格式有點差 見諒! JavaScipt程式碼: <script type="text/javascript"> var lastsel3; //選擇一行進行編輯時用到的 $(function(){ $("#list").jqGrid(
Ext grid中單元格編輯,editor為combobox時用法
.com clas ont con reat back trap hang style { header: ‘TO_PTN_NM‘, dataIndex: "TO_PTN_NM", sortable: true, rend
Extjs grid 單元格編輯
code col null checkbox creat true 單元格編輯 source tex 實現grid勾選後出現編輯按鈕,通過增加一個字段checked來控制 事件如下: selectionchange: function (thi, sel
gridview單元格編輯新增資料
行號 private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) {
Excel2007設定過單元格格式後,並不能立即生效必須挨個雙擊單元格,才能生效。資料行很多,效率太低。
原因:Excel2007設定過單元格格式後,並不能立即生效必須挨個雙擊單元格,才能生效。資料行很多。效率太低。 原因:主要是一些從網上拷貝過來的日期或數字excel預設為文字格式或特殊-中文數字格式大小寫。 手動設定單元格,將格式改成日期格式,但仍不能參與計算。只有挨個單元格雙擊,才能生效;才可以計
獲取wpf datagrid單元格編輯事件
DataGrid標籤中加 <i:Interaction.Triggers> <i:EventTrigger EventName="CellEditEnding" > <i:InvokeCommandAction Command="{Binding CellEditEnding
UITableViewCell 設定單元格選中後只顯示一個打勾的狀態
今天做個表格,突然發現在選中某行時打勾,再次選中其它行時,上次選中的行的勾還在,不能自動消失。 於是試了以下3種方法: 1、// 第一種方法:在選中時先遍歷整個可見單元格,設定所有行的預設樣式,再設定選中的這行樣式,此方法不能取消單元格的選中 - (void)tableView:(UITableView
【JqGrid】jqgrid合併單元格
程式碼看下面: 程式碼可以直接copy到一個.html檔案裡就可以執行 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xh
EasyUI DataGrid 單元格編輯 註釋版
最近做組織部專案的時候,需要點選Datagrid,然後能夠寫入數值;研究了半天沒明白是什麼意思,後來查資料的時候,直接在easyUI 中文網的Demo中找到了相同的程式碼,但是程式碼沒有註釋,依然不是很理解,後來找同伴一塊推敲,基本掌握了整個思路,寫出註釋來給大家分
分享一下jqgrid合併單元格在原先程式碼的基礎上進行有優化提高了效率
轉自http://bbs.blueidea.com/thread-3067461-1-1.html 謝謝原作者的程式碼和分享 效果:同列相鄰的單元格,值相同的,合併單元格。 優化後的程式碼: function Merger(gridName, CellNa
UITableView設定單元格選中後只顯示一個打勾的三種簡單方法(僅供參考)
1、第一種方法:先定位到最後一行,若選中最後一行直接退出,否則用遞迴改變上次選中的狀態,重新設定本次選中的狀態。 - (UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIn