热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:LSJ_NHibernate

篇首语:本文由编程笔记#小编为大家整理,主要介绍了LSJ_NHibernate相关的知识,希望对你有一定的参考价值。先放狗先放图,再说话

篇首语:本文由编程笔记#小编为大家整理,主要介绍了LSJ_NHibernate相关的知识,希望对你有一定的参考价值。



先放狗...先放图,再说话...

技术分享

 

 


先把H+的框架往上一套,看上去还不错(主要是本人头像技术分享)先弄一个增删改查出来再说

技术分享

文件结构上,我就分了两级,因为用了iframe嵌套,iframe里面的内容页我都放templet里面了,单独调试某个页面也非常方便,当然喜欢根据功能板块分的也行,随个人嗜好.

表格使用的是bootstrap-table插件,主要功能是 分页,局部刷新,导出......


由于不喜欢使用面包屑,页面乱跳,所以我把增删改查功能都放在一个页面,每个页面对应一个js文件

技术分享


先把怎么玩bootstrap-table的代码copy过来

 


$(function () {
//1.初始化Table
var oTable = new TableInit();
oTable.Init();
//2.初始化Button的点击事件
var oButtOnInit= new ButtonInit();
oButtonInit.Init();
});
var TableInit = function () {
var oTableInit = new Object();
//初始化Table
oTableInit.Init = function () {
$(
‘#tb_departments‘).bootstrapTable({
url: RequestListUrl,
//请求后台的URL(*)
method: ‘post‘, //请求方式(*)
toolbar: ‘#toolbar‘, //工具按钮用哪个容器
striped: true, //是否显示行间隔色
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
pagination: true, //是否显示分页(*)
sortable: false, //是否启用排序
sortOrder: "asc", //排序方式

queryParams: oTableInit.queryParams,
//传递参数(*)
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
pageNumber:1, //初始化加载第一页,默认第一页
pageSize: 10, //每页的记录行数(*)

pageList: [
10, 25, 50, 100], //可供选择的每页的行数(*)
search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
strictSearch: true,
showColumns:
true, //是否显示所有的列
showRefresh: true, //是否显示刷新按钮
minimumCountColumns: 2, //最少允许的列数
clickToSelect: true, //是否启用点击选中行
height: 600, //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
uniqueId: "ID", //每一行的唯一标识,一般为主键列
showToggle:true, //是否显示详细视图和列表视图的切换按钮
cardView: false, //是否显示详细视图
detailView: false, //是否显示父子表
columns: [{
checkbox:
true
}, {
field:
‘user_name‘,
title:
‘用户名‘
}, {
field:
‘nick_name‘,
title:
‘昵称‘
}, {
field:
‘mobile‘,
title:
‘手机号‘
}, {
field:
‘email‘,
title:
‘邮箱‘
}, ]

});
};
//得到查询的参数
oTableInit.queryParams = function (params) {
var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
limit: params.limit, //页面大小
offset: params.offset, //页码
user_name: $("#user_name").val(),
mobile: $(
"#mobile").val()
};
return temp;
};
return oTableInit;
};

非常的简单,这里吧一些路径提取出来,以后类似页面就可以直接copy了


//请求地址(列表)
var RequestListUrl = "/Templet/GetUserList";
//请求地址(单条记录)
var RequestUrl = "/Templet/GetUser";
//请求地址(删除记录)
var RequestDelUrl = "/Templet/DelUser";
//请求地址(修改)
var RequestEditUrl = "EditUser";
//请求控制器(添加)
var RequestAddUrl = "AddUser"

然后就是增删改查了,也是很容易,都是$.post提交到控制器


var ButtOnInit= function () {
var oInit = new Object();
var postdata = {};
oInit.Init
= function () {
$(
"#btn_add").click(function () {
$(
"#myModalLabel").text("新增用户");
$(
"#myModal").find(".form-control").val("");
$(
#myModal).modal()
});
$(
"#btn_edit").click(function () {
var arrselectiOns= $("#tb_departments").bootstrapTable(getSelections);
if (arrselections.length > 1) {
var d = dialog({
fixed: true,
content:
"只能选择一行进行编辑",
padding:
30
});
d.show();
//关闭提示模态框
setTimeout(function () {
d.close().remove();
},
2000);
return;
}
if (arrselections.length <= 0) {
var d = dialog({
fixed: true,
content:
"请选择有效数据",
padding:
30
});
d.show();
//关闭提示模态框
setTimeout(function () {
d.close().remove();
},
2000);
return;
}
$(
"#myModalLabel").text("编辑");
$.post(RequestUrl, { id: arrselections[
0].id }, function (data) {
$(
"#id").val(data.id);
$(
"#txt_user_name").val(data.user_name);
$(
"#txt_mobile").val(data.mobile);
$(
"#txt_email").val(data.email);
$(
"#txt_nick_name").val(data.nick_name);
$(
"#txt_password").val(data.password);
$(
"#txt_passwords").val(data.password);
$(
"#form0").attr("action", RequestEditUrl);
});
$(
#myModal).modal();
});
$(
"#btn_delete").click(function () {
var arrselectiOns= $("#tb_departments").bootstrapTable(getSelections);
if (arrselections.length <= 0) {
var d = dialog({
fixed: true,
content:
"请选择有效数据",
padding:
30
});
d.show();
//关闭提示模态框
setTimeout(function () {
d.close().remove();
},
2000);
return;
}
var d = dialog({
title:
系统提示,
padding:
30,
content:
确定要删除这些数据?,
okValue:
确定,
ok: function () {
this.title(提交中…);
var ids = "";
$(arrselections).each(function () {
ids
+= this.id + ",";
})
if (ids.length > 1)//去掉最后一个,
{
ids
= ids.substring(0, ids.length - 1);
}
$.post(RequestDelUrl, { ids: ids }, function (data) {
var e = dialog({
padding:
30,
content: data.msg
});
//显示模态框
e.show();
//先关闭主窗体
$(#myModal).modal(hide)
//刷新数据
$(#tb_departments).bootstrapTable(refresh, { url: RequestListUrl });
//关闭提示模态框
setTimeout(function () {
e.close().remove();
},
2000);
});
},
cancelValue:
取消,
cancel: function () { }
});
d.show();
});
$(
"#btn_query").click(function () {
$(
"#tb_departments").bootstrapTable(refresh);
});
};
return oInit;
};

后台就不贴具体实现代码了,浪费位置


[HttpPost]
public JsonResult GetUserList(int limit = 10, int offset = 1, string user_name = "", string mobile = "")

继续放狗...

技术分享

仔细的朋友可能发现这个这个提示比前面的丑一点点,好吧,这是我自定义的,在做这个的时候,我遇到一个大坑,就是post提交表单的时候假设要验证用户名是否存在,如果存在则阻止表单提交,折腾了好久都没搞好,后来使用jquery.unobtrusive-ajax.js,可以在提交表单的时候进行验证,添加成功后刷新表格数据


      //刷新数据
$(#tb_departments).bootstrapTable(refresh, { url: /Templet/GetUserList });

修改与删除与这类似,这里就不重复说明了.

 


推荐阅读
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • ElasticSearch成功安装完毕。 测试数据添加出现{  error:{    root_cause ... [详细]
  • 入门Java需熟练掌握哪些技术呢?
    Java工程师无疑是当下令人艳羡的工作之一,因此,每年都有大批大批的朋友想要报名Java工程师学习Java也就不奇怪了。那么入门Java掌握哪些技术能力 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
author-avatar
东张西望
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有