写在前面


在项目的开发过程中,我们使用最多的是表单的序列化。而有关以Table的序列化成Json的方法不太常见。

在做功能的时候发现,没有提交如何把Table序列化成Json的解决方案。以下,是个人对Table序列化的解决方法。

希望能给遇到同样问题的”童鞋“提供一点思路。

具体操作步骤


前端写法:

<fieldset class="layui-elem-field" style="width: 99%;margin: 10px auto;border: 1px solid #009688;border-radius:5px">
<legend>配置信息</legend>
<div class="layui-field-box">
<div class="layui-form">
<div class="layui-btn-group">
<button class="layui-btn" id="bntAddRow"><i class="layui-icon"></i>增行</button>
<button class="layui-btn layui-btn-danger" id="btnDelRow"><i class="layui-icon"></i>删行</button>
</div>
<div style="width:99%;margin:0 auto">
<table class="layui-table">
<thead>
<tr>
<th><input type="checkbox" lay-filter="allChoose" /></th>
<th>英文字段</th>
<th>中文字段</th>
<th>表名</th>
<th>表别名</th>
<th>是否显示</th>
<th>是否链接</th>
<th>排序</th>
<th>点击主键</th>
<th>是否省略</th>
<th>省略字段</th>
<th>字段表名</th>
<th>界面绑定id</th>
<th>选择器</th>
<th>文本类型</th>
<th>查询类型</th>
<th>权限类型</th>
</tr>
</thead>
<tbody id="bind_List"></tbody>
</table>
</div>
<div class="layui-form" style="text-align: center;">
<button class="layui-btn" id="btnSave">保存</button>
<button class="layui-btn layui-btn-primary" id="btnclose">取消</button>
</div>
</div>
</div>
</fieldset>
//引用Jquery
$(function(){
var Json = SerializeTable("bind_List");
$.post("" + _RequestUrl + ".ashx", { act: "SavePage", Json: Json, opuser: _opuser }, function (msg) {
if (msg > 0) {
parent.layer.msg("保存成功", { icon: 1 });
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭
}
else { layer.msg("保存失败", { icon: 2 }); return; }
});
}); //BindDiv 为绑定的Id
function SerializeTable(BindDiv) {
var tb_Json = "[";
//首先,循环行
$("#" + BindDiv + " tr").each(function (i, rows) {
tb_Json += "{";
//其次,循环每一行的列
$.each(rows.cells, function (i, columns) {
//这里去除input标签类型是 checkbox
if (i > 0) {
//判断name值不能位空
if ($(columns).children().attr("name") == "" && $(columns).children().attr("name") == undefined) { }
else { tb_Json += "\"" + $(columns).children().attr("name") + "\":\"" + $(columns).children().val() + "\","; }
}
});
//去除最后一位逗号
tb_Json = tb_Json.substring(0, tb_Json.length - 1);
tb_Json += '},';
});
tb_Json = tb_Json.substring(0, tb_Json.length - 1);
tb_Json += "]";
return tb_Json;
}

后台接收

public static int SavePower(string Json, string Powerid, string opuser)
{ int result = 0;
using (var conn = ConnectionFactory.MySqlCon())
{
string sql = "";
List<sys_menurolefunc> mrf;
mrf = JsonConvert.DeserializeObject<List<sys_menurolefunc>>(Json);
List<sys_menurolefunc> lstmrf = new List<sys_menurolefunc> { };
//查询是否存在
string query = "select count(*) from sys_menurolefunc where role_id=?ids";
DynamicParameters pr = new DynamicParameters();
pr.Add("?ids", Powerid);
int isHave = Convert.ToInt32(conn.ExecuteScalar(query, pr));
if (isHave > 0)
{
string sqldel = "delete from sys_menurolefunc where role_id=?role_ids";
DynamicParameters prs = new DynamicParameters();
prs.Add("?role_ids", Powerid);
int isHaves = conn.Execute(sqldel, prs);
DalCommon.LogsInfo(opuser, "操作日志", "删除权限", "操作表:sys_menurolefunc;删除角色:" + Powerid);//日志记录
} foreach (var item in mrf)
{
sys_menurolefunc smrf = new sys_menurolefunc();
smrf.menu_id = item.menu_id;
smrf.func_id = item.func_id;
smrf.role_id = item.role_id;
lstmrf.Add(smrf);
}
using (var trans = conn.BeginTransaction())
{
try
{
sql = "insert into sys_menurolefunc(menu_id,func_id,role_id)";
sql += "values (?menu_id,?func_id,?role_id)";
int count = conn.Execute(sql, lstmrf);
trans.Commit();
result = 1;
DalCommon.LogsInfo(opuser, "操作日志", "分配权限", "操作表:sys_menurolefunc;");//日志记录
}
catch (Exception e)
{
/*回滚事务*/
trans.Rollback();
result = 0;
string error = e.Message;
DalCommon.LogsInfo(opuser, "系统日志", "错误日志", "错误:" + error);//日志记录
throw;
}
}
}
return result;
}

有关 Table 获取Json 的解决方案的更多相关文章

  1. 获取json数据

    通过异步获取json来展示数据表格,性能提高不少.实例如下: 前台: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...

  2. Android Volley获取json格式的数据

    为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...

  3. jquery通过ajax方法获取json数据不执行success

    1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准 ...

  4. Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  5. jquery通过ajax方法获取json数据不执行success回调

    问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述 ...

  6. AngularJS学习笔记(3)——通过Ajax获取JSON数据

    通过Ajax获取JSON数据 以我之前写的与用户交互的动态清单列表为例,使用JSON前todo.html代码如下: <!DOCTYPE html> <html ng-app=&quo ...

  7. (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法

    (六)Net Core项目使用Controller之一 一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择 ...

  8. jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...

  9. Dapper操作MySQL数据库获取JSON数据中文乱码

    前言 在项目中利用Dapper将JSON数据存储到MySQL数据库,结果发现JSON数据中的中文乱码,特此记录,希望对存储JSON的童鞋能有所帮助,文中若有错误之处,还望批评指正. Dapper获取J ...

随机推荐

  1. poi操作Word创建超链接

    项目引入poi: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ ...

  2. 2.InfluxDB-InfluxQL基础语法教程--目录

    本文翻译自官网,官方文档地址:(https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/) InfluxQL ...

  3. linux中利用speedtest-cli测网速

    [root@elegant-snap-3 you-get]# wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/spe ...

  4. pandas 之 datetime 初识

    import numpy as np import pandas as pd 认识 Time series data is an impotant from of data in many diffe ...

  5. SQL Server 使用union all查询多个条件数据合并分组显示,同比统计

    ),a.created_yearmonth,) created_yearmonth, a.countaccount countaccount, a.yxsl yxsl, a.sccdsl sccdsl ...

  6. mysql数据库之用户管理和权限

    mysql服务器进程在启动的时候会读取这6张表,并在内存中生成授权表,所以这几个文件是直接加载进内存的. 以后后续的任何用户登录及其访问权限的检查都通过检查这6张表来实现的.通过访问内存上所生成的结构 ...

  7. tensorflow模型量化实例

    1,概述 模型量化应该是现在最容易实现的模型压缩技术,而且也基本上是在移动端部署的模型的毕竟之路.模型量化基本可以分为两种:post training quantizated和quantization ...

  8. 0.Jenkins 介绍

    一.持续集成的概念 continuous  intergaration  (简称CI),持续集成. 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味 ...

  9. Pytorch 使用不同版本的 cuda

    由于课题的原因,笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验.在运行和学习网络上的 Pytorch 应用代码的过程中,不少项目会标注作者在运行和实验时所使用的 Pytorch 和 c ...

  10. n8n 试用

    前边有简单的介绍n8n,如果大家看了官方网站会有一个比较醒目的说明zapier以及tray.io的开源替代方案 以下是一个简单的试用 环境准备 docker-compose 文件   version: ...