Easyui主从表设计
js代码:
// 全局变量
var loading;
var grid;
var mainGrid;
var dlg_Edit;
var dlg_Edit_form;
var virpath = ""; //网站的虚拟目录 如:/ShopManager
var permissions;
var addPermissionName = 'City_Add'.toLowerCase();
var editPermissionName = 'City_Edit'.toLowerCase();
var delPermissionName = 'City_Delete'.toLowerCase();
var savePermissionName = 'City_Save'.toLowerCase();
var exportPermissionName = 'City_PrintandExport'.toLowerCase();
var curRowData;
var lastIndex; $(function () { dlg_Edit = $('#Dlg-Edit').dialog({
closed: true,
modal: true,
toolbar: [{
text: '保存',
iconCls: 'icon-save',
handler: saveData
}, '-', {
text: '关闭',
iconCls: 'icon-no',
handler: function () {
dlg_Edit.dialog('close');
}
}],
onBeforeLoad: function (param) {
//var password = $("#ConcreteDType").attr("value");
}
}).dialog('center');
dlg_Edit_form = dlg_Edit.find('form'); $.ajax({
url: virpath + '/admin/GetPermissionsForCurrentUser/?permissionKey=City',
type: 'post',
datatype: 'application/json; charset=utf-8',
error: function (result) {
},
success: function (result) {
permissions = result;
grid = $('#grid').treegrid({
rownumbers: true,
fit: true,
title: '城市列表',
pagination: false,
//pageSize: 20,
fitColumns: true,
singleSelect: true,
striped: true,
idField: "CityId",
treeField: 'Name',
//sortName: 'Sort',
//sortOrder: 'asc',
//queryParams: { filter: ''},
datatype: 'application/json; charset=utf-8',
method: 'get',
toolbar: [{
text: '新增',
iconCls: 'icon-add',
handler: add,
id: 'btnAdd',
disable: true
}, '-', {
text: '编辑',
iconCls: 'icon-edit',
handler: edit,
id: 'btnEdit',
disable: true
}, '-', {
text: '删除',
iconCls: 'icon-remove',
handler: del,
id: 'btnDel',
disable: true
}, '-', {
text: '刷新',
iconCls: 'icon-search ',
handler: reload
}, '-'],
columns: [[
{
field: 'Sort', title: '排序', width: 100, sortable: true }
, {
field: 'Name', title: '名称', width: 100, sortable: true }
, {
field: 'Province', title: '所属省份', width: 100, sortable: false }
, {
field: 'Pingyin', title: '拼音', width: 100, sortable: true }
, {
field: 'Jiangpin', title: '简拼', width: 100, sortable: true } ]]
,
onClickRow: function (row) {//运用单击事件实现一行的编辑结束,在该事件触发前会先执行onAfterEdit事件
var rowIndex = row.CityId;
if (lastIndex != rowIndex) {
grid.treegrid('endEdit', lastIndex);
}
},
onDblClickRow: function (row) { //双击事件
if (row == undefined) return;
var rowIndex = row.CityId; if (lastIndex != rowIndex) {
grid.treegrid('endEdit', lastIndex);
}
var disabled = $('#btnEdit').linkbutton('options').disabled;
if (disabled || row.Predefined) {
grid.treegrid('cancelEdit', rowIndex);
} else {
grid.treegrid('beginEdit', rowIndex);
} lastIndex = rowIndex;
},
onAfterEdit: function (row, changes) {
if (row.Predefined) return;
var rowId = row.CityId;
$.ajax({
url: virpath + '/api/City/Put/' + rowId,
data: row,
type: 'put',
datatype: 'application/json; charset=utf-8',
success: function (content) {
//result为请求处理后的返回值
var data = getObjectFrom(content);
if (data.success) {
Msgfade('操作成功'); //提示消息
grid.treegrid('reload'); } else {
Msgalert('错误', data.msg, 'error');
}
}
});
},
onBeforeLoad: function (param) {
setButtonPermissions(permissions);
},
onHeaderContextMenu: function (e, field) {
e.preventDefault();
if (!$('#tmenu').length) {
createColumnMenu();
}
$('#tmenu').menu('show', {
left: e.pageX,
top: e.pageY
});
},
onContextMenu: function (e, rowData) {
e.preventDefault();
curRowData = rowData;
if (!$('#rmenu').length) {
createRowContextMenu();
}
$('#rmenu').menu('show', {
left: e.pageX,
top: e.pageY
});
},
onLoadSuccess: function (data) { //当数据加载成功时触发 },
onLoadError: function (arguments) {
$.messager.alert('提示', '由于网络或服务器太忙,加载失败,请重试!', 'error');
}
});
mainGrid = $('#gridleft').datagrid({
title: '省份',
iconCls: 'icon-save',
method: 'get',
url: '/api/Province/Get',
queryParams: { filter: '' },
datatype: 'application/json; charset=utf-8',
idField: 'ProvinceId',
sortName: 'ProvinceId',
//sortOrder: 'desc',
sortOrder: 'asc',
pageSize: 30,
striped: true,
columns: [[
{
field: 'Sort', title: '排序', width: 100, sortable: true }
, {
field: 'Name', title: '名称', width: 100, sortable: true }
, {
field: 'Pingyin', title: '拼音', width: 100, sortable: true }
, {
field: 'Jiangpin', title: '简拼', width: 100, sortable: true }
]],
fit: true,
pagination: true,
rownumbers: true,
fitColumns: true,
singleSelect: true,
onSelect: function (rowIndex, rowData) {
showAll(rowData.ProvinceId);
},
onLoadSuccess: function (data) {
if (data.total > 0)
$('#gridleft').datagrid('selectRow', 0);
},
onLoadError: function () {
$.messager.alert('提示', '由于网络或服务器太忙,加载失败,请重试!', 'error');
},
onBeforeLoad: function (param) { }
}); }
});
}); function createColumnMenu() {
var tmenu = $('<div id="tmenu" style="width:100px;"></div>').appendTo('body');
var fields = grid.datagrid('getColumnFields');
for (var i = 0; i < fields.length; i++) {
$('<div iconCls="icon-ok"/>').html(fields[i]).appendTo(tmenu);
}
tmenu.menu({
onClick: function (item) {
if (item.iconCls == 'icon-ok') {
grid.datagrid('hideColumn', item.text);
tmenu.menu('setIcon', {
target: item.target,
iconCls: 'icon-empty'
});
} else {
grid.datagrid('showColumn', item.text);
tmenu.menu('setIcon', {
target: item.target,
iconCls: 'icon-ok'
});
}
}
});
}
function getSelectedKey() {
var rows = grid.datagrid('getSelections');
if (rows.length == 0) return '';
return rows[0].UserName;
} function getSelectedArr() {
var ids = [];
var rows = grid.treegrid('getSelections');
for (var i = 0; i < rows.length; i++) {
ids.push(rows[i].CityId);
}
return ids;
}
function getSelectedID() {
var ids = getSelectedArr();
return ids.join(',');
}
function arr2str(arr) {
return arr.join(',');
} function add() {
var rows = mainGrid.datagrid('getSelections');
if (rows.length == 0) return;
dlg_Edit.dialog('open').dialog('setTitle', '添加');
dlg_Edit_form.form('clear');
$("#ProvinceId").val(rows[0].ProvinceId);
var parentRows = grid.datagrid('getSelections');
if (parentRows.length > 0) {
$("#ProvinceId").val(parentRows[0].CityId);
} dlg_Edit_form.url = virpath + '/api/City/Post';
dlg_Edit_form.method = 'post';
} function edit() {
var rows = grid.datagrid('getSelections');
var num = rows.length;
if (num == 0) {
Msgshow('请选择一条记录进行操作!');
return;
}
else if (num > 1) {
$.messager.alert('提示', '您选择了多条记录,只能选择一条记录进行修改!', 'info');
return;
}
else if (rows[0].Predefined) {
$.messager.alert('提示', '预定义类型不允许修改!', 'info');
return;
}
else {
dlg_Edit.dialog('open').dialog('setTitle', '修改:' + rows[0].Name);
dlg_Edit_form.form('reset');
dlg_Edit_form.form('load', rows[0]); //加载到表单的控件上
dlg_Edit_form.method = 'put';
dlg_Edit_form.url = virpath + '/api/City/Put/' + rows[0].CityId;
}
} function del() {
//var arr = getSelectedKey();
var arr = getSelectedArr();
//if (arr!='') {
if (arr.length > 0) {
var rows = grid.datagrid('getSelections');
var num = rows.length;
if (num == 0) {
Msgshow('请选择一条记录进行操作!');
return;
}
else if (rows[0].Predefined) {
$.messager.alert('提示', '预定义类型不允许删除!', 'info');
return;
} $.messager.confirm('提示', '您确认要删除选中的记录吗?', function (data) {
if (data) {
$.ajax({
//url: virpath + '/api/Categories/' + arr,
url: virpath + '/api/City/Delete/' + arr2str(arr),
type: 'delete',
datatype: 'application/json; charset=utf-8',
error: function (result) {
Msgalert('错误', '由于网络或服务器太忙,提交失败,请重试!', 'error');
grid.datagrid('clearSelections');
},
success: function (content) {
//content为请求处理后的返回值
var result = getObjectFrom(content);
if (result.success) {
Msgfade('操作成功'); //提示消息
grid.treegrid('reload');
grid.datagrid('clearSelections');
} else {
Msgalert('错误', result.msg, 'error');
}
}
});
}
});
} else {
Msgshow('请先选择要删除的记录。');
}
}
function saveData() {
dlg_Edit_form.form('submit', {
url: dlg_Edit_form.url,
onSubmit: function () {
return $(this).form('validate');
},
//success:function(data) {alert(data)}
success: function (content) {
//content为请求处理后的返回值
var result = getObjectFrom(content);
if (result.success) {
Msgfade('操作成功'); //提示消息
grid.treegrid('reload');
dlg_Edit.dialog('close');
} else {
Msgalert('错误', result.msg, 'error');
}
}
});
} function reload() {
grid.treegrid('reload');
}
function showAll(ProvinceId) {
grid.treegrid({ url: '/Api/City/Gett?ProvinceId=' + escape(ProvinceId) });
}
function getSelectedProvinceId() {
var provinceId = '';
var rows = $('#gridleft').datagrid('getSelections');
if (rows.length > 0) {
provinceId = rows[0].ProvinceId;
}
return provinceId;
}
function exportData() {
var filter = getSelectedProvinceId();
if (filter == '') return;
window.blank = true;
window.location = virpath + '/Api/City/GetExport/?provinceId=' + escape(filter) + '&recordCount=1000';
}
CSHTML代码
@{
ViewBag.Title = "City";
Layout = "~/Views/Shared/_LeftFixTowColumnLayout1.cshtml";
ViewBag.AdminJsUrl = YbRapidSolution.Mvc.AutofacBootStrapper.RELEASE
? @Url.Content("~/Scripts/Admin/City.min.js")
: @Url.Content("~/Scripts/Admin/City.js");
}
<div id="Dlg-Edit" title="窗口" style="width: 550px; height: 400px" buttons="#buttons">
<div style="padding: 20px 40px 40px 0px;">
<form method="POST" id="FormEdit">
<input name="CityId" id="CityId" type="hidden" />
<input name="ProvinceId" id="ProvinceId" type="hidden" />
<table style="width: 100%">
<tr>
<td class="text-right" style="width: 100px">名称:
</td>
<td>
<input type="text" name="Name" id="Name" class="easyui-validatebox easyui-textbox" data-options='required:true' maxlength="15" style="width: 100%" />
</td>
</tr>
<tr>
<td class="text-right">拼音:
</td>
<td>
<input type="text" name="Pingyin" id="Pingyin" class="easyui-validatebox easyui-textbox" maxlength="50" style="width: 100%" />
</td>
</tr>
<tr>
<td class="text-right">简拼:
</td>
<td>
<input type="text" name="Jiangpin" id="Jiangpin" class="easyui-validatebox easyui-textbox" maxlength="15" style="width: 100%" />
</td>
</tr>
<tr>
<td class="text-right">排序:
</td>
<td>
@* 货币参考配置:data-options="precision:2,groupSeparator:',',decimalSeparator:'.',prefix:'¥'" style="width: 150px"/> *@
<input type="text" name="Sort" id="Sort" class="easyui-numberspinner" style="width: 150px" />
</td>
</tr>
<tr>
<td class="text-right">备注:
</td>
<td>
<textarea type="text" name="Description" id="Description" style="width: 100%; height: 300px" maxlength="1073741823"></textarea>
</td>
</tr>
</table>
</form>
</div>
</div>
<div id="buttons" style="padding: 10px">
<a href="javascript:void(0)" class="easyui-linkbutton c1" iconcls="icon-save" type="PUT" onclick="saveData()">保存</a>
<a href="javascript:void(0)" class="easyui-linkbutton c2" iconcls="icon-cancel" onclick="javascript:$('#Dlg-Edit').dialog('close')">关闭</a>
</div>
控制器中添加
public IEnumerable<CityModel> Gett(int provinceId)
{
var items = _service.GetAll().Where(a => a.ProvinceId == provinceId).OrderBy(c => c.Sort);
var model = items.ConvertTo(_convertCallback);
return model;
}
/// <summary>
/// 获取首页记录
/// </summary>
/// <param name="filter"></param>
/// <param name="rows"></param>
/// <param name="sort"></param>
/// <param name="order"></param>
/// <returns></returns>
public virtual EasyUIResponseResult<CityModel> Gett(string filter, int rows, string sort, string order, int provinceId)
{
return Gett(filter, , rows, sort, order, provinceId);
}
/// <summary>
/// 分页查询
/// </summary>
/// <param name="filter"></param>
/// <param name="page"></param>
/// <param name="rows"></param>
/// <param name="sort"></param>
/// <param name="order"></param>
/// <returns></returns>
public EasyUIResponseResult<CityModel> Gett(string filter, int page, int rows, string sort, string order, int provinceId)
{ if (page <= ) page = ;
var items = _service.FindByFilter(c => c.ProvinceId == provinceId, filter, page - , rows, sort, order); return this.CreateEasyUIResponseResult(items.TotalCount, items.Where(a => a.ProvinceId == provinceId), _convertCallback);
}
效果图
Easyui主从表设计的更多相关文章
- EF Code First MySql 主从表设计的一些需要注意的内容
假如有下面两张表 public class Main { public int Id{get;set;} public string Name{get;set}; public virtual ICo ...
- 如何: 在 VS中的设计时刻主从表绑定控件到数据库
这个示例展示了如何在 Visual Studio 2005 的设计时刻,把一个 data-aware 控件 (XtraGrid.XtraPivotGrid.XtraVerticalGrid 等) 绑定 ...
- easyUI dataGrid主从表点击展开问题
昨天在公司写代码遇到了一个问题,就是在用easyUI做主从表的时候在查询之后点击展开的时候不能再次展开了.先说一下主从表我也是第一次用 效果如下图: 然后点击前面的小加号出现以下效果: 然而遇到了一个 ...
- Oracle优化-表设计
前言 绝大多数的Oracle数据库性能问题都是由于数据库设计不合理造成的,只有少部分问题根植于Database Buffer.Share Pool.Redo Log Buffer等内存模块配置不合理, ...
- DevExpress主从表 按组分页一组不足一页为一页--以此记录
本文的主要是说明Dev的报表的主从表,主从表的每一组显示在一页,当一组超出一页,第二页只显示第一组的. 一.每上报表设置图 简单设计图如上 二.后台代码 报表页代码 public partial cl ...
- Winform界面中主从表编辑界面的快速处理
在Winform开发中,我们往往除了常规的单表信息录入外,有时候设计到多个主从表的数据显示.编辑等界面,单表的信息一般就是控件和对象实体一一对应,然后调用API保存即可,主从表就需要另外特殊处理,本随 ...
- 在GridControl表格控件中实现多层级主从表数据的展示
在一些应用场景中,我们需要实现多层级的数据表格显示,如常规的二级主从表数据展示,甚至也有多个层级展示的需求,那么我们如何通过DevExpress的GridControl控表格件实现这种业务需求呢?本篇 ...
- RDIFramework.NET V3.3 WinForm版新增订单管理主从表事例
功能描述 无论什么系统,除了常规的单表处理外,主从表的应用都是非常普遍的,RDIFramework.NET V3.3 WinForm版本中新增了一个主从表的事例供大家参考.主从表的界面设计大同小异,主 ...
- 表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树
EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等. ...
随机推荐
- windows下Qt5.1.0配置android环境搭建 good
1.首先下载好需要配置的软件: 1>Qt 5.1.0 for Android (Windows 32-bit, 716 MB)(Info)下载地址: http://qt-project.org/ ...
- [LeetCode]题解(python):037-Sudoku Solver
题目来源 https://leetcode.com/problems/sudoku-solver/ Write a program to solve a Sudoku puzzle by fillin ...
- java第一课堂
java第一课堂视频请在优酷搜索java第一课堂即可
- json和string 之间的相互转换
json和string 之间的相互转换 <script type="text/javascript"> //先认识一下js中json function showInfo ...
- oracle 循环语句
1.基本循环(至少会执行一次) DECLARE I ; BEGIN LOOP --循环开始 DBMS_OUTPUT.PUT_LINE('VALUE:'||I); ; --退出循环条件: I:; --循 ...
- 执行shell脚本的几种方法及区别
执行shell脚本的几种方法及区别 http://blog.csdn.net/lanxinju/article/details/6032368 (认真看) 注意:如果涉及到脚本之间的调用一定要用 . ...
- Javascript return false的作用(转)
大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.return false 就相当于终止符,r ...
- linux shell 输入密码不显示
1 read -s -p "YOUR PassWord:" pa echo "${pa}" 2 [liujianzuo@ow2 mysql_scri]$ cat ...
- 更改AlertView背景
UIAlertView *theAlert = [[[UIAlertViewalloc] initWithTitle:@"Atention" message: @"I'm ...
- C# ZedGraph 控件各属性以及示例
ZedGraph属性\方法介绍 Copy(Boolean) ->> 将图像复制到剪贴板.DoPageSetup()() ->> 打开打印设置对话框. DoPrint()() - ...