整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

弹出层插件 jqgrid的使用

弹出层插件 jqgrid的使用

.引用相关头文件

引入CSS:

<link href="Scripts/jquery-ui-1.8.1.custom.css" rel="stylesheet" type="text/css" />

<link href="Scripts/ui.jqgrid.css" rel="stylesheet" type="text/css" />

引入JS:

<script src="Scripts/jquery-1.5.1.js" type="text/javascript"></script>

<script src="Scripts/jquery-ui.min.js" type="text/javascript"></script>

<script src="Scripts/grid.locale-en.js" type="text/javascript"></script>

<script src="Scripts/jquery.jqGrid.min.js" type="text/javascript"></script>

因为jqGrid3.6及以后的版本集成了jQuery UI,所以,此处需要导入UI相关js和css。另外grid.locale-en.js这个语言文件必须在jquery.jqGrid.min.js之前加载,否则会出问题。

2.将jqgrid加入页面中

根据jqGrid的文档,要想生成一个jqGrid,最直接的方法就是:

$("#list").jqGrid(options);

其中list是页面上的一个table:<table id="list"></table>

下面是一个简单的例子:

<script type="text/javascript">

$(document).ready(function () {

jQuery("#list").jqGrid({

url: 'Handler.ashx',

datatype: "json",

mtype: 'GET',

colNames: ['SalesReasonID', 'Name', 'ReasonType', 'ModifiedDate'],

colModel: [

{ name: 'SalesReasonID', index: 'SalesReasonID', width: 40, align: "left", editable: true },

{ name: 'Name', index: 'Name', width: 100, align: "center" },

{ name: 'ReasonType', index: 'ReasonType', width: 100, align: "center" },

{ name: 'ModifiedDate', index: 'ModifiedDate', width: 150, align: "center", search: false }

],

rowList: [10, 20, 30],

sortname: 'SalesReasonID',

viewrecords: true,

sortorder: "desc",

jsonReader: {

root: "griddata",

total: "totalpages",

page: "currpage",

records: "totalrecords",

repeatitems: false

},

pager: jQuery('#pager'),

rowNum: 5,

altclass: 'altRowsColour',

//width: 'auto',

width: '500',

height: 'auto',

caption: "DemoGrid"

}).navGrid('#pager', { add: true, edit: true, del: true,search:false,refresh:false }); ;

})

二、 jqgrid的重要选项

具体的options参考,可以访问jqGrid文档关于option的章节(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:options)。其中有几个是比较常用的,重点介绍一下:

  • url :jqGrid控件通过这个参数得到需要显示的数据,具体的返回值可以使XML也可以是Json。
  • datatype :这个参数用于设定将要得到的数据类型。类型包括:json 、xml、xmlstring、local、javascript、function。
  • mtype : 定义使用哪种方法发起请求,GET或者POST。
  • height :Grid的高度,可以接受数字、%值、auto,默认值为150。
  • width :Grid的宽度,如果未设置,则宽度应为所有列宽的之和;如果设置了宽度,则每列的宽度将会根据shrinkToFit选项的设置,进行设置。
  • shrinkToFit :此选项用于根据width计算每列宽度的算法。默认值为true。如果shrinkToFit为true且设置了width值,则每列宽度会根据width成比例缩放;如果shrinkToFit为false且设置了width值,则每列的宽度不会成比例缩放,而是保持原有设置,而Grid将会有水平滚动条。
  • autowidth :默认值为false。如果设为true,则Grid的宽度会根据父容器的宽度自动重算。重算仅发生在Grid初始化的阶段;如果当父容器尺寸变化了,同时也需要变化Grid的尺寸的话,则需要在自己的代码中调用setGridWidth方法来完成。
  • pager :定义页码控制条Page Bar,在上面的例子中是用一个div(<div id=”pager”></div>)来放置的。
  • sortname :指定默认的排序列,可以是列名也可以是数字。此参数会在被传递到Server端。
  • viewrecords :设置是否在Pager Bar显示所有记录的总数。
  • caption :设置Grid表格的标题,如果未设置,则标题区域不显示。
  • rowNum :用于设置Grid中一次显示的行数,默认值为20。正是这个选项将参数rows(prmNames中设置的)通过url选项设置的链接传递到Server。注意如果Server返回的数据行数超过了rowNum的设定,则Grid也只显示rowNum设定的行数。
  • rowList :一个数组,用于设置Grid可以接受的rowNum值。例如[10,20,30]。
  • colNames :字符串数组,用于指定各列的题头文本,与列的顺序是对应的。
  • colModel :最重要的数组之一,用于设定各列的参数。(稍后详述)
  • prmNames :这是一个数组,用于设置jqGrid将要向Server传递的参数名称。(稍后详述)
  • jsonReader :这又是一个数组,用来设定如何解析从Server端发回来的json数据。(稍后详述)

2.1 prmNames选项

prmNames是jqGrid的一个重要选项,用于设置jqGrid将要向Server传递的参数名称。其默认值为:

prmNames : {

page:"page", // 表示请求页码的参数名称

rows:"rows", // 表示请求行数的参数名称

sort: "sidx", // 表示用于排序的列名的参数名称

order: "sord", // 表示采用的排序方式的参数名称

search:"_search", // 表示是否是搜索请求的参数名称

nd:"nd", // 表示已经发送请求的次数的参数名称

id:"id", // 表示当在编辑数据模块中发送数据时,使用的id的名称

oper:"oper", // operation参数名称

editoper:"edit", // 当在edit模式中提交数据时,操作的名称

addoper:"add", // 当在add模式中提交数据时,操作的名称

deloper:"del", // 当在delete模式中提交数据时,操作的名称

subgridid:"id", // 当点击以载入数据到子表时,传递的数据名称

npage: null,

totalrows:"totalrows" // 表示需从Server得到总共多少行数据的参数名称,参见jqGrid选项中的rowTotal

}

2.2 jsonReader选项

jsonReader是jqGrid的一个重要选项,用于设置如何解析从Server端发回来的json数据,如果Server返回的是xml数据,则对应的使用xmlReader来解析。jsonReader的默认值为:

jsonReader : {

root: "rows", // json中代表实际模型数据的入口

page: "page", // json中代表当前页码的数据

total: "total", // json中代表页码总数的数据

records: "records", // json中代表数据行总数的数据

repeatitems: true, // 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。

cell: "cell",

id: "id",

userdata: "userdata",

subgrid: {

root:"rows",

repeatitems: true,

cell:"cell"

}

}

假如有下面一个json字符串:

{"totalpages":"3","currpage":"1","totalrecords":"11","griddata":[{"SalesReasonID":"1","Name":"Price","ReasonType":"Other","ModifiedDate":"1998年6月1日"},{"SalesReasonID":"2","Name":"On Promotion","ReasonType":"Promotion","ModifiedDate":"1998年6月1日"},{"SalesReasonID":"3","Name":"Magazine Advertisement","ReasonType":"Marketing","ModifiedDate":"1998年6月1日"},{"SalesReasonID":"4","Name":"Television Advertisement","ReasonType":"Marketing","ModifiedDate":"1998年6月1日"},{"SalesReasonID":"5","Name":"Manufacturer","ReasonType":"Other","ModifiedDate":"1998年6月1日"}]}

其对应的jsonReader为:jsonReader: {

root: "griddata",

total: "totalpages",

page: "currpage",

records: "totalrecords",

repeatitems: false

}

注:cell、id在repeatitems为true时可以用到,即每一个记录是由一对id和cell组合而成,即可以适用另一种json结构。援引文档中的例子:

repeatitems为true时:

jQuery("#gridid").jqGrid({

...

jsonReader : {

root:"invdata",

page: "currpage",

total: "totalpages",

records: "totalrecords"

},

...

});

json结构为:

{

"totalpages": "xxx",

"currpage": "yyy",

"totalrecords": "zzz",

"invdata" : [

{"id" :"1", "cell" :["cell11", "cell12", "cell13"]}, // cell中不需要各列的name,只要值就OK了,但是需要保持对应

{"id" :"2", "cell" :["cell21", "cell22", "cell23"]},

...

]

}

repeatitems为false时:

jQuery("#gridid").jqGrid({

...

jsonReader : {

root:"invdata",

page: "currpage",

total: "totalpages",

records: "totalrecords",

repeatitems: false,

id: "0"

},

...

});

json结构为:

{

"totalpages" : "xxx",

"currpage" : "yyy",

"totalrecords" : "zzz",

"invdata" : [

{"invid" : "1","invdate":"cell11", "amount" :"cell12", "tax" :"cell13", "total" :"1234", "note" :"somenote"}, // 数据中需要各列的name,但是可以不按列的顺序

{"invid" : "2","invdate":"cell21", "amount" :"cell22", "tax" :"cell23", "total" :"2345", "note" :"some note"},

...

]

}

2.3 colModel的重要选项

colModel也有许多非常重要的选项,在使用搜索、排序等方面都会用到。这里先只说说最基本的。

  • name :为Grid中的每个列设置唯一的名称,这是一个必需选项,其中保留字包括subgrid、cb、rn。
  • index :设置排序时所使用的索引名称,这个index名称会作为sidx参数(prmNames中设置的)传递到Server。
  • label :当jqGrid的colNames选项数组为空时,为各列指定题头。如果colNames和此项都为空时,则name选项值会成为题头。
  • width :设置列的宽度,目前只能接受以px为单位的数值,默认为150。
  • sortable :设置该列是否可以排序,默认为true。
  • search :设置该列是否可以被列为搜索条件,默认为true。
  • resizable :设置列是否可以变更尺寸,默认为true。
  • hidden :设置此列初始化时是否为隐藏状态,默认为false。
  • formatter :预设类型或用来格式化该列的自定义函数名。常用预设格式有:integer、date、currency、number等(具体参见文档 )。

三、 注意事项

1. 动态改变Add Form或者Edit Form中的select的内容,如:改变下图中的Comparator下拉中的内容。

$("#list_d").navGrid('#pager_d',{add:true,edit:true,del:true,search:false,refresh:false},

{

checkOnSubmit:false, closeAfterEdit: true,recreateForm:true,

beforeInitData:function(formid){

initComparator();

},

beforeShowForm: function(formid){

$("#list_d").jqGrid('setColProp', 'Name', { editrules:{required:false},});

$('#tr_Name', formid).hide();

}

},//edit

{},//add

{}//del

beforeInitData, beforeShowForm在每次点击编辑的时候都会执行。initComparator的作用是通过ajax获取数据,然后利用$("#list_d").jqGrid('setColProp', 'Comparator', { editoptions: { value: valueString} });来设置Comparator下拉中的内容。其中valueString的格式如下’ equal to: equal to; not equal to: not equal to’。键值之间用冒号隔开,2项之间用分号隔开。注意:把recreateForm设为true,否则'setColProp'只在第一次调用时有效。

2. var rowNum=parseInt($(this).getGridParam("records"), 10); 得到数据条数。

3. jQuery("#list_d").clearGridData();清空数据。

4. jQuery("#list").getCell(ids,"Key");获取第ids行的key列。

5. $("#list").jqGrid('setSelection', "1");选中第一行。放在loadComplete:中在gird加载完成的时候自动选中第一行。loadComplete:function(data){$("#list").jqGrid('setSelection', "1");

}

6. 对于像1中的可编辑的字段,可以设定rule,参见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules#editrules

7. 修改Option,以URL为例

jQuery("#list_d").jqGrid('setGridParam',{url:"xxx.aspx",page:1}).trigger('reloadGrid');

HP 大文件上传解决方案(500M以上),HTML+PHP超大视频上传实例,PHP批量上传大文件技巧,PHP批量上传大文件,PHP实现批量上传图片的技巧,PHP结合WEB UPLOADER插件实现分段,PHP结合WEB UPLOADER插件实现切片上传,PHP结合WEB UPLOADER插件实现断点续传,PHP结合WEB UPLOADER插件实现大文件上传,PHP结合UPLOADER插件实现分片上传文件,PHP结合百度UPLOADER插件实现分片上传文件,PHP结合WEB UPLOADER插件实现分片上传文件,前端HTML5,JS,JQ,VUE2,VUE3,React,

前端的话都有可能用到,VUE2,VUE3,HTML5,也不一定是VUE, 公司内部有自己的产品,有些产品是之前开发的,没有用VUE,而是用的普通的HTML模板,用的也还好。

后端PHP5,PHP6,PHP7,PHP8,ThinkPHP,

之前在网上也搜索过相关的资料,在论坛里面也与网友交流过,但是都不太令人满意。

客户是深圳这边的一家企业。

webuploader的组件公司研发部的同事也调研过,研究过他的实现,实际上他就是对Flash和HTML5进行了一个封装,本质还是调的HTML5的API,兼容性不是特别好。可扩展性也比较差,可维护性就更不用说了,之前公司项目遇到过坑,到现在连webuploader开发人员都联系不上。想找他们寻求一点技术支持的帮助,真的是想都不要想。公司这一块也愿意付费,就是付费寻求的技术支持,也不行。这一点真的让哥几个给整郁闷了。领导也不太满意,所以还是找有技术支持的产品。研发部的同事称这些项目是免费坑人项目。

服务器支持Linux,Windows,macOS,CentOS,中标麒麟,银河麒麟,统信,龙芯,华为鲲鹏,

数据库支持MySQL,达梦数据库,人大金仓

需要提供前端源码,后端源码,控件源码

需要提供7*24小时技术支持,长期技术支持,长期维护服务

需要提供手机,QQ,微信,企业微信,电子邮箱等联系方式

需要支持包含IE在内的全部浏览器

终端需要支持Windows,macOS,Linux,信创国产化环境,中标麒麟,银河麒麟,统信UOS,龙芯,华为

功能需要支持10G,50G,100G大文件上传和断点续传,刷新续传,重启续传

支持超大文件分片,分段,分块,分割上传下载,断点续传

支持文件夹上传,下载断点续传,支持文件夹层级结构,层级结构信息保存到数据库,下载的时候同样保留层级结构

支持加密上传,下载加密,端到端加密,国密SM4加密算法,数据加密传输,传输过程中要保证数据是加密的。版本:6.5.40

代码:https://gitee.com/xproer/up6-php/tree/6.5.40/

安装环境

PHP:7.2.14

调整块大小

NOSQL

NOSQL不需要任何配置,可以直接访问测试

SQL

创建数据库

您可以直接复制脚本进行创建

配置数据库连接

6.安装依赖

访问页面进行测试

数据表中的数据

相关参考:

文件保存位置

php5教程,

源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl

OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a
控件源码下载:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc

文件系统处理的作用:

1. 所有的项目离不开文件处理

2. 可以用文件长时间保存数据

3. 建立缓存, 服务器中文件操作

文件处理

1. 文件类型

以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型

在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型

block :块设置文件,磁盘分区,软驱, cd-rom等

char: 字符设备,I/O 以字符为单位, 键盘,打印机等

dir: 目录也是文件的一种

fifo:

file:

link:

unknown

filetype("目录或文件名")

is_array();

is_int();

is_string();

is_null;

is_bool();

is_dir -- 判断给定文件名是否是一个目录

is_executable -- 判断给定文件名是否可执行

is_file -- 判断给定文件名是否为一个正常的文件

is_link -- 判断给定文件名是否为一个符号连接

is_readable -- 判断给定文件名是否可读

is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的

is_writable -- 判断给定的文件名是否可写

is_writeable -- is_writable() 的别名


2. 文件的属性

file_exists();

filesize();

is_readable();

is_writeable();

filectime();

filemtime();

fileactime();

stat();

3. 和文件路径相关的函数

相对路径:相对于当前目录的上级和下级目录

. 当前目录

.. 上一级目录

./php/apache/index.php

php/apahce/index.php

login.php

./login.php

../images/tpl/logo.gif


路径分隔符号

linux/Unix "/"

windows "\"

DIRECTORY_SEPARATOR 为不同平台,在Windows \ Linux /

不管是什么操作系统PHP的目录分割符号都支技 / (Linux)

在PHP和Apache配置文件中如果需要指定目录,也使用/作为目录符号

绝对路径:

/ 根路径

/images/index.php

指的操作系统的根

指的是存放网站的文档根目录

分情况

如果是在服务器中执行(通过PHP文件处理函数执行)路径 则 “根”指的就是操作系统的根

如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”也就指的是文档根目录

http://www.xsphp.com/logo.gif


basename(url)

dirname(url)

pathinfo(url)


4. 文件的操作相关的函数

创建文件 touch("文件名")

删除文件 unlink("文件路径");

移动文件 为文件重新命名 rename("当前文件路径", “目录为文件路径”)

复制文件 copy("当前", “目标”);

一定要有PHP执行这个文件权限, Apache, 一个用户


和权限设计有关的函数


ls -l 或 ll

_rwxrwxrwx 777

_ 类型 _文件 d 表示是目录 l b

rwx 表这个文件的拥有者 r读 w写 x执行

rwx 表这个文件的拥有者所在的组 r读 w写 x执行

rwx 其它用户对这个为文件的权限 r读 w写 x执行

r 4

w 2

x 1

7 7 7 4+2+1 4+2+1 4+2+1

rwx rwx rwx

644

4+2 4 4

rw_ r__ r__

754

chmod u=rwx,g=rw,o=x

chmod 777 demo.php

chmod 644 demo.html

chown mysql demo.php

chgrp apache demo.php

chgrp -- 改变文件所属的组

chmod -- 改变文件模式

chown -- 改变文件的所有者

filegroup -- 取得文件的组

fileowner -- 取得文件的所有者


5. 文件的打开与关闭(读文件中的内容, 向文件中写内容)

读取文件中的内容

file_get_contents(); //php5以上

file()

readfile();

不足:全部读取, 不能读取部分,也不能指定的区域

fopen(URL, mode)

本地文件:

./test.txt

c:/appserv/www/index.html

/usr/local/apahce/index.html

远程:

http://www.baidu.com

fopen("./test.txt", "a+")

fwrite fread

r , 以只读模式打开文件

r+ 写

w, 以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则会清除原文件中所有内容,再写入(打开已有的重要文件)

w+ 除了可以写用fwrite, 还可以读fread

a 以只写的方式打开,如果文件不存在,则创建这个文件,并写放内容,如果文件存在,并原来有内容,则不清除原有文件内容,再原有文件内容的最后写入新内容,(追加)

a+除了可以写用fwrite, 还可以读fread

b 以二进制模式打开文件(图,电影)

t 以文本模式打开文件

fread() // 第一个是读取指定长度的字符

fgetc() //一次从文件中读取一个字符

fgets() //一次从文件中读取一行字符


feof($file); 如果读取文件出错,或到文件结束,则返回真

写入文件

file_put_contents(“URL”, “内容字符串”); //php5以上

如果文件不存在,则创建,并写入内容

如果文件存在,则删除文件中的内容,重新写放

不足: 不能以追加的方式写,也不能加锁

fopen()

fwrite() 别名 fputs

第一个参数是文件资源(fopen返回来的),第个参数是写的内容


本地文件:

./test.txt

c:/appserv/www/index.html

/usr/local/apahce/index.html

远程:

http://www.baidu.com

http://www.163.com

ftp://user@pass:www.baidu.com/index.php

6. 文件内部移动指针

ftell($file) //返回当前文件针的位置

fseek($file, 10);

fread();

rewind();


7. 文件的锁定一些机制处理


目录的处理

opendir()

readdir()

closedir()

rewinddir()

创建目录

mkdir(); //创建一个空目录

删除目录

rmdir(); //只可以删除空目录