日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

jqGrid點滴

 cynial 2011-01-06

1. 總論

jqGrid是一個非常好用,免費的Grid組件,主要的文檔是這里,第一個鏈接是Demo,第二個是Wiki的文檔

http://www./blog/jqgrid/jqgrid.html

http://www./jqgridwiki/doku.php

2. 基本功能

jqGrid主要的功能都在js文件中,在網(wǎng)頁中很簡單就是一個Table,一個Div

<table id="maingrid" cellpadding="0" cellspacing="0"></table>
<div id="maingridp" style="text-align:center;"></div>

比較典型的一個例子

jQuery().ready(function (){

var parameterValue= $("#parameterValue" ).val();


jQuery("#maingrid" ).jqGrid({


url:'controlleraction?parameter='+parameterValue,
datatype: 'json',
mtype: 'GET',
height: 255,
width: 650,

colNames:['Inv No','Date', 'Client', 'Amount','Tax','Total','Notes'],
colModel:[
{name:'id',index:'id', width:75},
{name:'invdate',index:'invdate', width:90},
{name:'name',index:'name', width:100},
{name:'amount',index:'amount', width:80, align:"right"},
{name:'tax',index:'tax', width:80, align:"right"},
{name:'total',index:'total', width:80,align:"right"},
{name:'note',index:'note', width:150, sortable:false}
],
rowNum:10,
autowidth: true,
rowList:[10,20,30],
pager: jQuery('#pager1'),
sortname: 'id',
viewrecords: true,
sortorder: "desc",
caption:"XML Example"
}).navGrid('#maingrid',{edit:false,add:false,del:false});

}

注意要在網(wǎng)頁中包括i18n目錄下的語言文件,以及下載Jquery UI的css和圖形文件。

jqGrid比較常用的幾個如下

A. url

給定一個url,用來取得數(shù)據(jù)。url的參數(shù)可以在前面的語句中準備好,這樣就可以用Ajax到后端取得數(shù)據(jù)了。

B. datatype

從url返回的數(shù)據(jù)類型,這里是Json,在C#中返回Json可以用Controller中的Json方法。

C. height/width

Grid的大小信息

D. ColNames

就是每個Column的Title Text

E. ColModel就是每個Column的屬性,這個很重要

(1) name: 就是json數(shù)據(jù)中對應的變量名

(2)index: 也是json數(shù)據(jù)中的變量名,用來排序的。大多數(shù)時候都等于name

(3) width: 列寬度

(4)align: 對齊

(5)sortable: 是否可以用此排序

(6)editable: 是否可以用此編輯

(7)edittype: 如何進行編輯??梢允莟extbox, select, checkbox

(8)editoption: 編輯的選項

編輯的幾個例子

editable: true, edittype: "select", editoptions: { dataUrl: appDomain +'/Fund/GetAllFundCode/'}

editable: true, edittype: "checkbox", editoptions: { value: "True:False" }

editable: true, edittype: "textarea", editoptions: { rows: "2", cols: "30"}

editrules: { number: true }

 

(9) search 是否可以進行search,缺省值是true

(10) searchoptions 就是等于,大于這些選項

Search例子:

search:false

search:true, searchoptions: { sopt: ['bw', 'bn', 'ew', 'en', 'cn', 'nc', 'eq', 'ne']}

search:true,searchoptions: { sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge']}

(11)formatter 格式化輸出,有幾個選項,也可以跟函數(shù)名

(12) formatoptions : 格式的選項

例子:

formatter: 'currency', formatoptions: { decimalSeparator: ",", thousandsSeparator: ",", decimalPlaces: 2, prefix: "$ " },

formatter: myFormatter

//如果是函數(shù)名,函數(shù)的定義是這樣的,返回值就是顯示的東西

function myFormatter(cellvalue, options, rowObject) {
return cellvalue+‘%’;}

F. rowNum

每頁顯示的Record數(shù)量

G. rowList

在底下有個Select,可以讓用戶設定每頁Record數(shù)量

H。autowidth

寬度設定

I.sortname/ sortorder

缺省的排序列和排序方式

J. caption

Grid的title名字

K. pager

在哪里顯示pager

L. navGrid

設置nav的參數(shù)

例子:

navGrid('#detailGridp', { edit: true, add: true, del: true, search: false },
// Edit Options, //Add Options, //Delete Options)

3. 其他

jqGrid 可以和Fiddler同時使用,用后者觀察返回值,便于編寫后臺的C#代碼。

A.  把子表的某個列和加起來

function updateSum(gridName, colIndex, controlName) {

var cellCount = $(gridName)[0].cells.length;
var rowCount = $(gridName)[0].rows.length;
var colNum = cellCount/rowCount;
var total = 0;
for (var i = 0; i < rowCount; i++) {
total += parseFloat($(gridName)[0].cells[i * colNum + colIndex].innerHTML);
}
$(controlName).val(total);
}

B. 在Edit Panel 顯示datepicker

editoptions: {
dataInit: function(element)
{ $(element).datepicker({ dateFormat: 'mm/dd/yy' }) }
}

C. 添加自定義按鈕

.navGrid('#detailGridp', { edit: false, add: false, del: false, search: false },
{},
{},
{}
).navButtonAdd('#detailGridp', {
caption: "",
buttonicon: "ui-icon-plus",
onClickButton: function() {
addPlan();
},
position: "last"
})
.navButtonAdd('#detailGridp', {
caption: "",
buttonicon: "ui-icon-pencil",
onClickButton: function() {
editPlan();
},
position: "last"
})
.navButtonAdd('#detailGridp', {
caption: "",
buttonicon: "ui-icon-trash",
onClickButton: function() {
deletePlan();
},
position: "last"
});

注意一點是ICON的名字,分別是plus, pencil和trash,不是add, delete等。

比較高級一點的做法是給個Id,然后在LoadComplete的時候,對這個Id,改innerHtml屬性,這樣就靈活多了。

ICON是Jquery UI的標準名字,可以在這個鏈接中查看

http://jquery-ui./svn/tags/1.6rc5/tests/static/icons.html

D. 改變編輯窗口和中間控件的大小

在官網(wǎng)上給的例子不對,這個要在Add Option那個括號里邊改。

在navGrid語句中,最后有三個大括號,里邊分別是Add/Update/Delete的Url什么的。Form的Size也在這里設置,改一個就都同時變化。

大體是這樣的,注意黑字部分

{savekey: [true, 13],
reloadAfterSubmit: true,
jqModal: false,
closeOnEscape: true,
closeAfterEdit: true,
width: 550,
height: 350,
addCaption: "Add My Field",
editCaption: "Edit My Field",

url:  "/Field/AddMyField",

.....}

里邊的控件如果是TextBox,我發(fā)現(xiàn)很難改,也許在花一點時間就能找到更好的做法?,F(xiàn)在的辦法是變成TestArea,然后做成一行,設定列的數(shù)量就可以調(diào)整大小了。

editable: true, edittype: "textarea",  editoptions: { rows: "1", cols: "75"}

 E. 改變Url,并刷新

jQuery("#grid" )
.setGridParam({
url: newUrl
})

.trigger("reloadGrid " );

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多