extJs项目实战
extjs是因为在公司用到一次,也是公司唯一一个extjs的项目,当时拿到这个需求的时候,我有点懵逼,这他妈的什么鬼,参加工作两年不到的纯小白,没办法,这是工作,必须要完成的.硬着头皮做吧,好在最后弄完了,整理一下文档,方便以后学习.
/**
*服务说明模板store
*/
Ext.define('ProductApp.goodsDescription', {
// extend:'Ext.app.Application',
extend : 'common.AppEx',
name : 'goodsDescription',// 为应用程序起一个名字,相当于命名空间
controllers : [// 声明所用到的控制层
'GoodsDescriptionCtrl'
],
paths:{
goodsReference:'product/app'
},
appFolder : 'product/app',// 加载对象类的跟路径
launch : function() {// 开始
var mainView = Ext.create('Ext.container.Container', {
layout : 'fit',
items : [{
xtype : 'goodsDescriptionMainView'
}]
});
this.addToContainer(mainView);
}
});
/**
*服务说明模板store
*/
Ext.define('ProductApp.goodsDescription', {
// extend:'Ext.app.Application',
extend : 'common.AppEx',
name : 'goodsDescription',// 为应用程序起一个名字,相当于命名空间
controllers : [// 声明所用到的控制层
'GoodsDescriptionCtrl'
],
paths:{
goodsReference:'product/app'
},
appFolder : 'product/app',// 加载对象类的跟路径
launch : function() {// 开始
var mainView = Ext.create('Ext.container.Container', {
layout : 'fit',
items : [{
xtype : 'goodsDescriptionMainView'
}]
});
this.addToContainer(mainView);
}
});
/**
*服务说明模板store
*/
Ext.define('ProductApp.goodsDescription', {
// extend:'Ext.app.Application',
extend : 'common.AppEx',
name : 'goodsDescription',// 为应用程序起一个名字,相当于命名空间
controllers : [// 声明所用到的控制层
'GoodsDescriptionCtrl'
],
paths:{
goodsReference:'product/app'
},
appFolder : 'product/app',// 加载对象类的跟路径
launch : function() {// 开始
var mainView = Ext.create('Ext.container.Container', {
layout : 'fit',
items : [{
xtype : 'goodsDescriptionMainView'
}]
});
this.addToContainer(mainView);
}
});
Ext.define('goodsDescription.model.GoodsDescriptionModel', {
extend: 'Ext.data.Model',
fields: [
//服务说明及描述的ModelClunm
{name:'serviceDescriptionId',mapping:'serviceDescriptionId'},
{name:'labelName',mapping:'labelName'},
{name:'labelIcon',mapping:'labelIcon'},
{name:'labelDescription',mapping:'labelDescription'},
{name:'sortNum',mapping:'sortNum'},
{name:'productId',mapping:'productId'},
{name:'isDefault',mapping:'isDefault'},
{name:'fileName',mapping:'fileName' }
]
});
/**
* 服务说明属性页面总的页面
*/
Ext.define('goodsDescription.view.goodsdescription.GoodsDescriptionMainView',{
extend:'Ext.panel.Panel',
alias : 'widget.goodsDescriptionMainView',
// title : '代码维护列表',
layout: {
type:'vbox',
align:'stretch'
},
frame:false,
defaults: {
split: true
},
items:[
{
tbar : [
{
xtype : 'button',
text : '添加服务说明',
action : 'addColumns',
icon : 'resources/images/add.jpg'
},'-', {
xtype : 'button',
text : '批量删除',
action : 'deleteGoodsDescription',
icon : 'resources/images/delete.jpg'
},'-',{
xtype : 'button',
text : '保存',
action : 'saveGoodsDescription',
icon : 'resources/images/filesave.png'
}
],
xtype:'goodsDescriptionGrid',
flex:1
}
],
});
/**
* 服务说明属性页面总的页面
*/
Ext.define('goodsDescription.view.goodsdescription.GoodsDescriptionMainView',{
extend:'Ext.panel.Panel',
alias : 'widget.goodsDescriptionMainView',
// title : '代码维护列表',
layout: {
type:'vbox',
align:'stretch'
},
frame:false,
defaults: {
split: true
},
items:[
{
tbar : [
{
xtype : 'button',
text : '添加服务说明',
action : 'addColumns',
icon : 'resources/images/add.jpg'
},'-', {
xtype : 'button',
text : '批量删除',
action : 'deleteGoodsDescription',
icon : 'resources/images/delete.jpg'
},'-',{
xtype : 'button',
text : '保存',
action : 'saveGoodsDescription',
icon : 'resources/images/filesave.png'
}
],
xtype:'goodsDescriptionGrid',
flex:1
}
],
});
/**
* 上传服务说明图片窗口
*/
Ext.define('goodsDescription.view.goodsdescription.GoodsDescImgAddWin', {
extend: 'Ext.window.Window',
alias: 'widget.goodsDescImgAddWin',
height: 150,
width: 400,
title: '上传图片',
closeAction: 'hide',
modal:true,
layout: 'fit',
initComponent: function() {
Ext.apply(this, {
buttons: [{
text: '上传',
action: 'preview'
}, {
text: '退出',
scope: this,
handler: this.close
}],
items: [{
xtype:'form',
itemId:'goodsDescImgForm',
layout: {
type: 'hbox',
padding:'5',
align:'middle'
},
items:[{
xtype: 'filefield',
itemId: 'goodsDescImg',
emptyText: 'Select an image',
name: 'photo',
width:250,
buttonText: '浏览...',
margin: '0 5 0 0',
regex :/\.(?:jpg|png|bmp|gif|jpeg)\b/i
},{
xtype: 'hiddenfield',
itemId: 'rowNo',
name: 'rowNo',
}]
}]
});
this.callParent(arguments);
}
});
/**
* 商品属性列表
*/
Ext.require([
'Ext.selection.CellModel'
]);
var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
var rowEditing = Ext.create('Ext.grid.plugin.RowEditing', {
clicksToMoveEditor: 1,
autoCancel: false
});
var gridForm = new Ext.FormPanel({
id: 'goodsDescInfo',
applyTo:Ext.getBody(),
frame: false,
hidden:true,
autoHeight:true,
labelAlign: 'left',
bodyStyle:'padding:0px',
width: 0,
items:[{
xtype: 'fieldset',
labelWidth: 150,
title:'加载grid信息内容',
defaultType: 'textfield',
autoHeight: true,
items:[{
fieldLabel: 'photo',
name :'goodsDescImg',
}]
}]
});
Ext.define('goodsDescription.view.goodsdescription.GoodsDescriptionGrid' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.goodsDescriptionGrid',
store: 'GoodsDescriptionStore',
// xtype : 'grid',
// id : 'grid_jglb',
// frame : true,
// region : 'center',
// columnLines : true,
// loadMask : true,
// viewConfig : {
// forceFit : true,
// scrollOffset : 0
// },
// anchor : '100%',
columns: [
{
xtype:'actioncolumn',
header:'操作',
width:50,
id:'goodsDescGridDelAction',
items: [{
icon: 'resources/images/delete.jpg',
tooltip: '删除',
}],
handler: function(grid, rowIndex, colIndex, item) {
var rec = grid.getStore().getAt(rowIndex);
this.fireEvent('delClick', {
serviceDescriptionId: rec.get('serviceDescriptionId')
});
}
},
{header: '排序',dataIndex:'sortNum',width:80,align:'center',sortable : true,editable : false,
field: {
xtype: 'numberfield',
allowBlank: false,
minValue: 1,
maxValue: 100000
}
},
{header: '标签名称',dataIndex:'labelName',width:150,align:'center',sortable : true,editable : false,
field: {
xtype: 'textfield',
maxLength:30,
allowBlank: false,
maxLengthText :"最多可输入30个字符"
}
},
{header: '标签描述',dataIndex: 'labelDescription',width:150,align:'center',sortable : true,editable : false,
field: {
xtype: 'textfield',
allowBlank: false,
maxLength:250,
maxLengthText :"最多可输入250个字符"
}
},{
header:'图片',
dataIndex: 'labelIcon',
width:100,
editable : false,
align:'center',sortable : true,
renderer:function(value,cellmeta,record,rowIndex,columnIndex,stroe){
// var returnStr = "<img id='img"+rowIndex+"' src='"+value+"'>";
// var returnStr = "<img id='img" + rowIndex + "' class='imgIconProduct' src='"+ value + "'>";
// return returnStr;
if (value == null || value == ''){
return"<img id='img" + rowIndex + "' class='imgIconProduct' src=' '>";
}else{
return"<img id='img" + rowIndex + "' class='imgIconProduct' src='"
+ value + "'>";
}
}
},{
xtype:'actioncolumn',
header:'上传',
width:50,
id:'goodsDescGridUploadAction',
items: [{
icon: 'resources/images/shangchuan.png',
tooltip: '上传',
}],
handler: function(grid, rowIndex, colIndex, item) {
this.fireEvent('uploadClick', {
rowIndex : rowIndex
});
}
}
],
selType: 'cellmodel',
plugins: [
Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1,
listeners: {
edit: function(){
// refresh summaries
//this.getSysCodeGrid().refresh();
}
}
})
],
viewConfig : {
forceFit : false,
enableRowBody : true,
getRowClass :function(record, rowIndex, p, ds) {
var cls = 'blue-row';
switch (rowIndex) {
case 1: // 把第2行设置为红色
cls = 'background: red'
break;
}
return cls;
}
} ,
initComponent:function(){
Ext.apply(this,{
selModel :Ext.create('Ext.selection.CheckboxModel',{mode:'MULTI'}),
dockedItems:[
{
dock: 'bottom',
xtype: 'pagingtoolbar',
store: 'GoodsDescriptionStore',
pageSize: 15,
displayInfo: true,
displayMsg: '显示 {0} - {1} 条,共计 {2} 条',
emptyMsg: '没有数据'
}
]});
this.callParent(arguments);
}
});
/**
* 根据显示方式ID获取显示方式描述
* @return {String}
*/
function showViewWayByID(viewWayID){
return 'ccc' ;
}
//Ext.getCmp("grid_jglb").getStore().on('load',setTdCls);//设置表格加载数据完毕后,更改表格TD样式为垂直居中
//function setTdCls(){
// var gridJglb=document.getElementById("grid_jglb");
// var tables = gridJglb.getElementsByTagName("table");//找到每个表格
// for(var k = 0; k < tables.length; k++){
// var tableV=tables[k];
// if(tableV.className=="x-grid3-row-table"){
// var trs=tables[k].getElementsByTagName("tr");//找到每个tr
// for(var i = 0;i < trs.length;i++){
// var tds=trs[i].getElementsByTagName("td");//找到每个TD
// for(var j = 1;j<tds.length;j++){
// tds[j].style.cssText="width:202px;text-align:center;line-height:130px;vertical-align:center;";
// }
// }
// };
// }
// }
package com.founder.product.action;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
import com.founder.common.BaseAction;
import com.founder.common.QueryResult;
import com.founder.kindeditor.action.KindEditor;
import com.founder.product.model.GoodsDescription;
import com.founder.product.model.ProductList;
import com.founder.product.service.GoodsDescriptionService;
import com.founder.sys.model.EcParams;
import com.founder.sys.model.SysCode;
import com.founder.sys.service.CodeService;
import com.founder.sys.service.SystemService;
import com.founder.util.DateUtil;
import com.founder.util.Upload;
import com.founder.util.UploadGoodsDescription;
public class GoodsDescriptionAction extends BaseAction{
private static final long serialVersionUID = 1L;
private GoodsDescriptionService goodsDescriptionService;
private CodeService codeService;
private File photo;
private String photoFileName;
private String photoContentType;
String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
String uploaded = "upload/gs/"+dateStr;
String detailUploaded = "upload/detail";
private SystemService systemService;
public CodeService getCodeService() {
return codeService;
}
public void setCodeService(CodeService codeService) {
this.codeService = codeService;
}
public File getPhoto() {
return photo;
}
public void setPhoto(File photo) {
this.photo = photo;
}
public String getPhotoFileName() {
return photoFileName;
}
public void setPhotoFileName(String photoFileName) {
this.photoFileName = photoFileName;
}
public String getPhotoContentType() {
return photoContentType;
}
public void setPhotoContentType(String photoContentType) {
this.photoContentType = photoContentType;
}
public String getDateStr() {
return dateStr;
}
public void setDateStr(String dateStr) {
this.dateStr = dateStr;
}
public String getUploaded() {
return uploaded;
}
public void setUploaded(String uploaded) {
this.uploaded = uploaded;
}
public String getDetailUploaded() {
return detailUploaded;
}
public void setDetailUploaded(String detailUploaded) {
this.detailUploaded = detailUploaded;
}
public SystemService getSystemService() {
return systemService;
}
public void setSystemService(SystemService systemService) {
this.systemService = systemService;
}
@Override
public void getAll() {
List<GoodsDescription> goodsDescription=goodsDescriptionService.getAll();
List list=goodsDescriptionService.getProList(goodsDescription);
this.doJSONResponse(list);
}
/**
* 引入相关的Service
*/
public GoodsDescriptionService getGoodsDescriptionService() {
return goodsDescriptionService;
}
public void setGoodsDescriptionService(
GoodsDescriptionService goodsDescriptionService) {
this.goodsDescriptionService = goodsDescriptionService;
}
/**
* 查询服务说明模板
*/
public void queryAllGoodsDesription() {
try {
String curr_page = getRequest().getParameter("page") ;
Map<String, Object> queryParam = new HashMap<String, Object>();
queryParam.put(QueryResult.CURR_PAGE, curr_page);
queryParam.put(QueryResult.PAGE_SIZE, page_size);
queryParam.put(QueryResult.SORT_FIELD,
sort_field == null ? "SORT_NUM" : sort_field);
queryParam.put(QueryResult.SORT_BY, "asc");
queryResult = (QueryResult) goodsDescriptionService.queryForPage(new QueryResult(queryParam));
entites = queryResult.getList();
int total = Integer.parseInt(queryResult.getProperties().get("total_row").toString());
this.doJSONPageResponse(entites,total) ;
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 添加 模板服务说明
*/
public void saveGoodsDesription()throws Exception{
Integer currentUserId = (Integer)getRequest().getSession().getAttribute("userId");
String currentTime = DateUtil.getCurrentDateString();
GoodsDescription gd=new GoodsDescription();
if("".equals(this.getRequest().getParameter("serviceDescriptionId"))){
gd.setLabelName(this.getRequest().getParameter("labelName"));
gd.setLabelDescription(this.getRequest().getParameter("labelDescription"));
if(this.getRequest().getParameter("sortNum").length()!=0){
gd.setSortNum(Integer.parseInt(this.getRequest().getParameter("sortNum")));
}else{
gd.setSortNum(null);
}
gd.setLabelIcon(this.getRequest().getParameter("labelIcon"));
gd.setIsDefault("Y");
gd.setIsDelete("N");
gd.setAddUserId(currentUserId);
gd.setAddTime(currentTime);
int result= goodsDescriptionService.insert(gd);
this.printResult(result);
}else{
gd.setLabelName(this.getRequest().getParameter("labelName"));
gd.setLabelDescription(this.getRequest().getParameter("labelDescription"));
gd.setSortNum(Integer.parseInt(this.getRequest().getParameter("sortNum")));
gd.setLabelIcon(this.getRequest().getParameter("labelIcon"));
gd.setIsDefault("Y");
gd.setIsDelete("N");
gd.setAddUserId(currentUserId);
gd.setAddTime(currentTime);
int result= goodsDescriptionService.updateGoodsDescription(gd);
this.printResult(result);
}
}
/**
* 删除模板服务说明
*/
public void deleteGoodsDesription() throws Exception{
String [] serviceDescriptionId = this.getRequest().getParameterValues("serviceDescriptionId") ;
for(int i=0;i<serviceDescriptionId.length;i++){
if(serviceDescriptionId[i].length()!=0){
int result = goodsDescriptionService.delete(serviceDescriptionId[i]) ;
this.printResult(result) ;
}
}
}
/**
* 图片临时保存和预览
*/
public void preview() throws Exception {
UploadGoodsDescription upload = new UploadGoodsDescription(photo, photoFileName, photoContentType);
HttpServletRequest request =this.getRequest();
EcParams ec = systemService.getDatailParams();
String realUpload ="";
String s =KindEditor.getDescUpConfig("max_upload_limit");
long maxSize = Long.parseLong(s);
MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;
Collection errList = wrapper.getErrors();
this.getResponse().setContentType("text/html; charset=utf-8");
if((long)upload.getPhoto().length() > maxSize){
this.getResponse().getWriter().print(
"{success:\"false\",msg:\"上传失败,图片大小超过限制!\"}");
} else {
String fileName = upload.myUpLoad(this.getResponse(),
this.getRequest(), uploaded,true,ec);
if (!"".equals(fileName) && fileName != null) {
this.getResponse().getWriter().print(
"{success:\"true\",msg:\"/" + fileName + "\"}");
} else {
this.getResponse().getWriter().print(
"{success:\"false\",msg:\"上传图片不符合规则,请上传长度和宽度仅等于 45*45 PX的图片!\"}");
}
}
}
}
package com.founder.product.service.impl;
import java.util.List;
import com.founder.common.BaseServiceImpl;
import com.founder.common.QueryResult;
import com.founder.product.dao.GoodsDescriptionDao;
import com.founder.product.model.GoodsDescription;
import com.founder.product.service.GoodsDescriptionService;
import com.founder.sys.model.SysCode;
public class GoodsDescriptionServiceImpl extends BaseServiceImpl implements GoodsDescriptionService{
GoodsDescriptionDao goodsDescriptionDao;
public GoodsDescriptionDao getGoodsDescriptionDao() {
return goodsDescriptionDao;
}
public void setGoodsDescriptionDao(GoodsDescriptionDao goodsDescriptionDao) {
this.goodsDescriptionDao = goodsDescriptionDao;
}
@Override
public List getProList(List<GoodsDescription> goodsDescription) {
try {
return goodsDescriptionDao.getAll();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 查询服务说明并进行分页
*/
public QueryResult queryForPage(QueryResult queryResult) {
try {
queryResult.calculate(goodsDescriptionDao.queryTotalNum(queryResult
.getParam()));
queryResult.setList(goodsDescriptionDao.queryForPage(queryResult
.getParam()));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return queryResult;
}
public int insert( GoodsDescription gd){
return goodsDescriptionDao.insert(gd);
}
@Override
public int updateGoodsDescription(GoodsDescription gd) throws Exception{
try{
return goodsDescriptionDao.updateGoodsDescription(gd);
}catch (Exception e){
e.printStackTrace();
throw e;
}
}
/**
* 删除服务说明模板
*/
@Override
public int delete(String[] serviceDescriptionId) throws Exception {
try {
goodsDescriptionDao.delete(serviceDescriptionId) ;
return 1 ;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
/**
* 删除服务说明模板
*/
@Override
public int delete(String serviceDescriptionId) throws Exception{
// TODO Auto-generated method stub
try {
goodsDescriptionDao.delete(serviceDescriptionId) ;
return 1 ;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
package com.founder.product.dao;
import java.util.List;
import java.util.Map;
import com.founder.common.BaseDao;
import com.founder.product.model.GoodsDescription;
public interface GoodsDescriptionDao extends BaseDao,java.io.Serializable {
@SuppressWarnings("unchecked")
public Integer queryTotalNum(Map map) throws Exception;
@SuppressWarnings("unchecked")
public List<GoodsDescription> queryForPage(Map map) throws Exception;
public int insert(GoodsDescription gd);
public int updateGoodsDescription(GoodsDescription gd);
public void delete(String[] serviceDescriptionId);
public void delete(String serviceDescriptionId) throws Exception;
}
"?>
.dtd" >
<sqlMap namespace="goods_description">
<!--服务说明模板 -->
<resultMap class="goodsDescription" id="productServiceDescriptionMap">
<result column="service_description_id" property="serviceDescriptionId"/>
<result column="label_name" property="labelName"/>
<result column="label_icon" property="labelIcon"/>
<result column="label_description" property="labelDescription"/>
<result column="sort_num" property="sortNum"/>
<result column="product_id" property="productId"/>
<result column="is_default" property="isDefault"/>
</resultMap>
<!-- 分页查询服务说明模板sql -->
<select id="query_for_page" parameterClass="map" resultMap="productServiceDescriptionMap">
select * from
(select rownum row_id, a.* from
(
select rownum r,psd.*
from product_service_description psd
and psd.is_delete='N'
and psd.is_default='Y'
<isNotNull property="sort_field">
order by $order_by$
</isNotNull>
) a )
</select>
<!-- 查询分页服务说明数量 -->
<select id="query_total_num" parameterClass="map" resultClass="java.lang.Integer">
select count(*)
from product_service_description psd
and psd.is_delete = 'N'
and psd.is_default='Y'
</select>
<!-- 新增 -->
<insert id="insert" parameterClass="goodsDescription">
<selectKey resultClass="int" keyProperty="serviceDescriptionId" >
SELECT goods_description_SEQ.nextval AS service_description_id from dual
</selectKey>
insert into product_service_description (
service_description_id,
label_name,
label_icon,
label_description,
sort_num,
product_id,
is_default,
is_delete,
ADD_TIME,
ADD_USER_ID,
EDIT_TIME,
EDIT_USER_ID)
values (
#serviceDescriptionId#,
#labelName#,
#labelIcon#,
#labelDescription#,
nvl (#sortNum#, (
FROM product_service_description) ),
<!--#sortNum#,-->
#productId#,
#isDefault#,
'N',
#addTime#,
#addUserId#,
#editTime#,
#editUserId#
)
</insert>
<!-- 删除商品属性 -->
<update id="deleteGoodsDescription" parameterClass="java.lang.Integer">
update product_service_description set IS_DELETE='Y'
where service_description_id=#value#
</update>
<!--更新 -->
<update id="updateGoodsDescription" parameterClass="goodsDescription">
update product_service_description
<dynamic prepend="set">
<isNotNull prepend="," property="labelName">
label_name = #labelName#
</isNotNull>
<isNotNull prepend="," property="labelIcon">
label_icon = #labelIcon#
</isNotNull>
<isNotNull prepend="," property="labelDescription">
label_description = #labelDescription#
</isNotNull>
<isNotNull prepend="," property="sortNum">
sort_num = #sortNum#
</isNotNull>
<isNotNull prepend="," property="productId">
product_id = #productId#
</isNotNull>
<isNotNull prepend="," property="isDelete">
IS_DELETE = #isDelete#
</isNotNull>
<isNotNull prepend="," property="isDefault">
IS_DEFAULT= #isDefault#
</isNotNull>
<isNotNull prepend="," property="addTime">
ADD_TIME = #addTime#
</isNotNull>
<isNotNull prepend="," property="addUserId">
ADD_USER_ID = #addUserId#
</isNotNull>
<isNotNull prepend="," property="editTime">
EDIT_TIME = #editTime#
</isNotNull>
<isNotNull prepend="," property="editUserId">
EDIT_USER_ID = #editUserId#
</isNotNull>
</dynamic>
where service_description_id= #serviceDescriptionId#
</update>
</sqlMap>
extJs项目实战的更多相关文章
- EXTJS项目实战经验总结一:日期组件的change事件:
1 依据选择的日期,加载相应的列表数据,如图: 开发说明 1 开发思路: 在日期值变化的事件中获得选择后的日期值,传给后台,然后从后台加载相应的数据 2 问题:在查看extjs2.2 的a ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- ExtJS 项目准备工作(一)
首先,需要从网上下载两个文件,一个是SenchaCmd-6.2.0-windows-64bit(我的电脑是window 10 64位) 另一个是ExtJs6的源码包(ext-6.0.0.415). 源 ...
- 【腾讯Bugly干货分享】React Native项目实战总结
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/577e16a7640ad7b4682c64a7 “8小时内拼工作,8小时外拼成长 ...
- Asp.Net Core 项目实战之权限管理系统(0) 无中生有
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
随机推荐
- 002_系统表查询(sysdatabases等)
002_系统表查询(sysdatabases等) --1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name --2.获取所有表 ...
- WCF理论 【转载】
原文地址:http://blog.itpub.net/23109131/viewspace-661613/ WCF是什么? WCF是"Windows Communication Founda ...
- jQuery旋转插件
jQuery旋转插件,支持Internet Explorer 6.0 + .Firefox 2.0.Safari 3.Opera 9.Google Chrome,高级浏览器下使用Transform,低 ...
- PHP HTTP
安装 HTTP 函数是 PHP 核心的组成部分.无需安装即可使用这些函数. PHP HTTP 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP header() 向客户端发送原 ...
- JavaWeb 之 重复提交表单和验证码相关的问题!
下面我们首先来说一下表单的重复提交问题,我们知道在真实的网络环境中可能受网速带宽的原因会造成页面中表单在提交的过程中出现网络的延迟等问题,从而造成多次提交的问题!下面我们就具体来分析一下造成表单提交的 ...
- pydev新工程
http://www.cnblogs.com/linjiqin/p/3595891.html 明天再编辑一下
- IO流(随机流,数组内存流
File file1=new File("test1.txt"); RandomAccessFile in2=new RandomAccessFile(file1,"rw ...
- C++ Const成员函数
一些成员函数改变对象,一些成员函数不改变对象. 例如: int Point::GetY() { return yVal; } 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象 ...
- jS放大镜效果
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="demo4.aspx.cs& ...
- 汇编test和cmp区别
来自http://tunps.com/assembly-test-and-cmp 看过破解教程,都知道test,cmp是比较关键,可是我一直不清楚它们究竟是怎么比较的,最后下决心找了很多资料,和大家一 ...