非常重要的是要注意,一旦项目中出现问题,就属于事故
1.物料批 和 ,这两张表的查询一定不能用全表查询,sql一定要走层面 条件查询,同样java层面一定要 传参过去,传参时,
唯一索引: 普通索引:table_N1,2,3… 主键索引:table_PK
varchar ( 文本) 对应java类型 String (二进制 图片) 对应java类型 byte[]
注意: 1.直接查询 对 clob类型不需要任何处理,映射到java类型 就是 String 如果是这样的话 PL/SQL看效果,然后直接查询,字段框只显示一个 clob(因为太长,PL/SQL 默认不显示) 解决办法: 1.select to_char(clob) 这样在 可以看到字段框 字符串了 2.在 PL/SQL 点击弹框 弹出 字符串的内容
看文档功能总结,就知道其他都是关联表。
段和初始值
<span class="btn btn-primary k-grid-excel" style="float:left;" onclick='Hap.importExcel("")' > <i class="fa fa-arrow-circle-up" style="margin-right:3px;"> </i><@spring.message "excel.import"/>
<span class="btn btn-primary k-grid-excel" style="float:left;margin-right:5px;" data-bind="click:exportExcel"><i class="fa fa-file-excel-o" style="margin-right:3px;"></i>导出</span>
16.kendoUi前端使用的几个注意点
1.grid不可编辑:
{
field: "name",
title: '姓名',
width: 120,
headerAttributes: {style: "text-align:center"},
attributes: {style: "text-align:center"},
editor: function(container,options){
container.html(options.model.name);
container.removeClass('k-edit-cell');
}
},
2.form不可编辑? 不会
3.必输校验 ?不会
4.选定lov 后带出 name框的值(就是将lov查出的 name 也赋值给 viewModel ,这样 lov框选中值后,name也赋上值了,判断的name框的值也就达到了自动带出的效果了)
{
field: "employeeId",
title: '用户名',
width: 120,
headerAttributes: {style: "text-align:center"},
attributes: {style: "text-align:center"},
template: function (dataItem) {
return dataItem['employeeCode'] || ''; /* 数据列默认显示值 */
},
editor: function (container, options) {
$('<input required name="' + options.field + '" />').appendTo(container)
.kendoLov($.extend( <@lov"EMPLOYEE_LOV"/>, {
select: function (e) {
// 将选择后的属性更新到数据模型中以保存
options.model.set('employeeId', e.item.employeeId);
//重要的就是这个,带出name值,就是给name赋值
options.model.set('name',e.item.name);
},
//TODO 之前的toolCategoryCode
textField: 'employeeCode', /* 编辑器显示的值 */
model: options.model
}));
}
5.下拉框默认值(optionLabel: “是”)
editor: function (container, options) {
$('<input required name="' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
dataTextField: "meaning", //显示的文本
dataValueField: "value", //实际的值
optionLabel: "是",//默认选项值
dataSource: YES_NO,
valuePrimitive: true
});
}
kendoui ,或者 hap
,插入的时候,insert(主键 , cid) vaules(seq_s.nextvalue , seq_cid_s.nextvalue)创建的代码已经创建好了的
<script>kendo.bind($('#div 的 id'), viewModel);</script>
这样保证,这些div 的script事件是,将 数据 绑定到 对应 grid的 viewModel ,这些script就是,首先调用对应的下拉框 或 lov 然后,将框里面的值,赋值给 viewModel 例如
<script> $("#siteId").kendoLov($.extend(${
lovProvider.getLov(base.contextPath, base.locale, "LOV_SITE")}, {
select: function (e) {
viewModel.model.set("siteId", e.item.siteId); } })); </script>
<script type="text/javascript"> var viewModel = Hap.createGridViewModel("#grid"); var viewModelLine = Hap.createGridViewModel("#gridLine") </script>
这个代表的是,grid里面的 viewModel也就是数据模型,这是 grid的根本,viewModel 不是说对应的 实体类的json或者 说 colums的json,他在创建的时候,就是一个 map 里面的 key value都是为null的, var viewModel = Hap.createGridViewModel(“#grid”); 这句最先执行 然后在,访问接口之前,你可以给 viewModel赋值,后,最先访问 read接口,这时在parameterMap中,对viewModel初始化了一下
你可以随便put 键值对,但是,一般
parameterMap: function (options, type) {
if (type !== "read" && options.models) {
var datas = Hap.prepareSubmitParameter(options, type)
return kendo.stringify(datas);
} else if (type === "read") {
return Hap.prepareQueryParameter(viewModel.model.toJSON(), options)
}
}
这是 viewModel的初始化,代码,这话的意思其实很简单,就是 调用查询方法,将查询出来的 JSON 赋值给 viewModel,所以说,viewModel的初始 key 是和 查询出来的,json相对应的
22:整个页面需要的关注点
1.各个div 2.grid 3.各个事件发生 绑定的 script ,各个div绑定的 script …(script) 4.viewModel 5.viewModel赋值,取值的几个位置,script里面,paramterMap viewMoel初始化的时候,头行,传值,赋值给 viewModel的时候
1.第一步,定义 2个 grid的 viewModel
<script type="text/javascript"> var viewModel = Hap.createGridViewModel("#grid"); var viewModelLine = Hap.createGridViewModel("#gridLine") </script>
2.第二步,定义头的div 和 行的 div 头div
<div id="page-content">
<div class="pull-left" id="toolbar-btn" style="padding-bottom:10px;">
<span class="btn btn-primary k-grid-add" style="float:left;margin-right:5px;" data-bind="click:create"><@spring.message "hap.new"/></span>
<span class="btn btn-success k-grid-save-changes" data-bind="click:save" style="float:left;margin-right:5px;"><@spring.message "hap.save"/></span>
<span data-bind="click:remove" class="btn btn-danger" style="float:left;"><@spring.message "hap.delete"/></span>
</div>
<script>kendo.bind($('#toolbar-btn'), viewModel);</script>
<div class="pull-right" id="query-form" style="padding-bottom:10px;">
<input type="text" data-role="maskedtextbox" style="float:left;width:150px;margin-right:5px;" placeholder='<@spring.message "OdInspectionPlan.inspectionPlanCode"/>' data-bind="value:model.inspectionPlanCode" class="k-textbox">
<input type="text" data-role="maskedtextbox" style="float:left;width:150px;margin-right:5px;" placeholder='<@spring.message "OdInspectionPlan.inspectionPlanName"/>' data-bind="value:model.inspectionPlanName" class="k-textbox">
<input placeholder='<@spring.message "bom.sitecode"/>' data-bind="value:model.siteId" id="siteId">
<script> $("#siteId").kendoLov($.extend(${
lovProvider.getLov(base.contextPath, base.locale, "LOV_SITE")}, {
select: function (e) {
viewModel.model.set("siteId", e.item.siteId); } })); </script>
<input placeholder='<@spring.message "odinspectionplan.materialid"/>' data-bind="value:model.materialId" id="materialId">
<script> $("#materialId").kendoLov($.extend(${
lovProvider.getLov(base.contextPath, base.locale, "LOV_MATERIAL")}, {
select: function (e) {
viewModel.model.set("materialId", e.item.materialId); } })); </script>
<input placeholder='<@spring.message "odinspectionplan.status"/>' data-bind="value:model.status" id="status">
<script> $("#status").kendoComboBox({
dataTextField: "meaning", dataValueField: "value", valuePrimitive: true, dataSource: STATUS }); </script>
<input placeholder='<@spring.message "odinspectionplan.identifycategory"/>' data-bind="value:model.identifyCategory" id="identifyCategory">
<script> $("#identifyCategory").kendoComboBox({
dataTextField: "meaning", dataValueField: "value", valuePrimitive: true, dataSource: I_CATE }); </script>
<span class="btn btn-primary" style="float:left;width:70px" data-bind="click:query" type="submit"><@spring.message "hap.query"/></span>
</div>
<script>kendo.bind($('#query-form'), viewModel);</script>
<!-- 第一个页面的 div -->
<div id = "xxx" style="clear:both">
<div id="grid"></div>
</div>
<script>kendo.bind($('#xxx'), viewModel);</script>
</div>
行div
<!--行 div-->
<div class="pull-left" id="toolbar-btn1" style="padding-bottom:10px;">
<span class="btn btn-primary k-grid-add" style="float:left;margin-right:5px;" data-bind="click:create"><@spring.message "hap.new"/></span>
<span class="btn btn-success k-grid-save-changes" data-bind="click:save" style="float:left;margin-right:5px;"><@spring.message "hap.save"/></span>
<span data-bind="click:remove" class="btn btn-danger" style="float:left;"><@spring.message "hap.delete"/></span>
</div>
<script>kendo.bind($('#toolbar-btn1'), viewModelLine);</script>
<div id="bottom-content" style="clear:both;margin: 10px 5px 5px;">
<div id="gridLine"></div>
</div>
<script>kendo.bind($('#bottom-content'), viewModelLine);</script>
3.定义头和行的 script grid 头的grid
<!--头 script --> <script type="text/javascript"> <!--绑定前面的 html 内容 --> Hap.initEnterQuery('#query-form', viewModel.query); var BaseUrl = _basePath; dataSource = new kendo.data.DataSource({ transport: { read: { url: BaseUrl + "/calb/od/inspection/plan/query", type: "POST", dataType: "json" }, update: { url: BaseUrl + "/calb/od/inspection/plan/submit", type: "POST", contentType: "application/json" }, destroy: { url: BaseUrl + "/calb/od/inspection/plan/remove", type: "POST", contentType: "application/json" }, create: { url: BaseUrl + "/calb/od/inspection/plan/submit", type: "POST", contentType: "application/json" }, //这里比较重要,这里是初始化 viewModel的代码,如果是查询的话,那么viewModel初始值和查询的VO的json串一样 parameterMap