写在前面


在项目的开发过程中,我们使用最多的是表单的序列化。而有关以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. jQuery基础的HTML与text区别

    浏览器样式 <body> <h1>jQueryAPI特点<a href="#">a标<i>来个斜体</i>签</a ...

  2. Gitlab批量迁移项目

    最近接到一个需求,要把一个Gitlab上边的项目全部导入到另外一个Gitlab,借鉴了网上的一个方法,成功实现. 参考链接:https://segmentfault.com/a/11900000159 ...

  3. Linux7/Centos7用户密码安全

    当Linux7/Centos7的用户root密码常用如下方式找回密码: 第一步:按e键进入内核启动页面如下: 第二步:在linux16一行LANG=zh_CN.UTF-8后面加rd.break con ...

  4. Vs2012安装介绍

    1.下载Vs2012旗舰版安装文件 http://download.microsoft.com/download/B/0/F/B0F589ED-F1B7-478C-849A-02C8395D0995/ ...

  5. woocommerce调用分类描述另一种方法

    woocommerce是在wordpress基础上开发的,有些函数是通用的,有些需要自己调用,比如文章分类用category_description()就可以调用,而woocommerce的产品分类描 ...

  6. opencv鼠标事件

    #include <opencv2\opencv.hpp> using namespace cv; struct mouse_para { cv::Mat org; cv::Mat img ...

  7. ubuntu16.04安装docker图形管理界面portainer

    下载镜像 docker pull portainer/portainer 单机版运行 docker run -d --name portainer \ -p 9000:9000 \ --restart ...

  8. Git 创建点开头的文件和目录

    Git 创建点开头的文件和目录 # 创建 .gitignore 文件 1@DESKTOP-3H9092J MINGW64 /e/x1/x1/demo1 (master) $ echo .idea &g ...

  9. 深度学习accuracy

    accuracy=(1+3)/(1+2+3+4),即在所有样本(例子)中做出正确预测的的比例,或者说正确预测的样本数占总预测样本数的比值. precision=(1)/(1+2),指的是正确预测的正样 ...

  10. BZOJ5243 : [Lydsy2017省队十连测]绝版题

    要找的就是这棵树的带权重心,以带权重心为根时每棵子树的权值和不超过总权值和的一半. 因此按$\frac{v[i]}{\sum v[i]}$的概率随机选取一个点$x$,则重心有$\frac{1}{2}$ ...