1. 程式人生 > >JqGrid之單元格編輯後儲存-yellowcong

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 !="&nbsp;" ){ //$("#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 

JqGridjqgrid合併單元

程式碼看下面: 程式碼可以直接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