写在前面

上一小节,总结了数据显示时,会出现的日期问题。以及如何处理格式化日期。这个小节,主要总结的是使用Dapper 中的QueryMultiple方法依次显示查询多表的数据。

实践步骤

1.在BorrowBookController控制器中 创建Edit 视图

/// <summary>
/// 根据Id查询多表数据
/// </summary>
/// <param name="Id">参数主键</param>
/// <returns>返回Json对象</returns>
public ActionResult Edit(string Id)
{
ViewBag.Id = Id;
return View();
}

2.在BorrowBookController控制器中 创建QueryById 方法

/// <summary>
/// 带参数的多表查询
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public JsonResult Query(string Id)
{
//查询表1
string sql = "select * from sys_Book_Type where book_Type_id=?book_Type_id;";
//查询表2
sql += "select * from sys_Borrow_Book where book_Type_id=?book_Type_id";
//声明动态参数
DynamicParameters parameter = new DynamicParameters();
//打开连接
IDbConnection conn = ConnectionFactory.MysqlConn();
//添加参数
parameter.Add("?book_Type_id", Id);
//执行QueryMultiple方法
var all = conn.QueryMultiple(sql, parameter);
//读取sys_Book_Type表
var bookstype = all.Read<sys_Book_Type>().ToList();
//读取sys_Borrow_Book表
var books = all.Read<sys_Borrow_Book>().ToList();
//声明字典
Dictionary<string, object> dic = new Dictionary<string, object>();
//把表bookstype数据添加到字典中
dic.Add("bookstype", bookstype);
//把表books数据添加到字典中
dic.Add("books", books);
//返回Json对象
return Json(dic, JsonRequestBehavior.AllowGet);
}

注意:

调用QueryMultiple查询多表时,查询语句和读取语句要一一对应,否则返回给前台的数据会是null。这也是和QueryMultiple读取的方法有关,因为它读取的机制就是依次读取数据的。

3.在View视图中,创建Edit视图

<div class="layui-container">
<div class="layui-col-md12">
<h2 style="margin-top:10px;">编辑</h2>
<hr class="layui-bg-green">
<div class="layui-form " style="padding:20px;margin:10px 10px 10px 10px;border:1px solid #ddd;" id="" >
<div class="layui-form-item">
<label class="layui-form-label">书类型名称</label>
<div class="layui-input-block">
<input type="text" id="book_Type_Id" style="display:none;">
<input type="text" name="book_Type_Name" id="book_Type_Name" placeholder="请输入标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">书类型描述</label>
<div class="layui-input-block">
<textarea class="layui-textarea" name="book_Type_Des" id="book_Type_Des" placeholder="请输入书籍类型描述"></textarea>
</div>
</div>
</div>
<div class="layui-form layui-form-pane" style="padding:20px;margin:10px 10px 10px 10px;border:1px solid #ddd;" id="" lay-filter="">
<button class="layui-btn layui-btn-sm" id="btnAddRow">新增</button>
<table class="layui-table" id="tab">
<tr>
<th>借书编号</th>
<th>书名</th>
<th>书简介</th>
<th>操作</th>
</tr>
<tr class="list">
<td><input type="text" name="book_Num" class="layui-input" /></td>
<td><input type="text" name="book_Name" class="layui-input" /></td>
<td><input type="text" name="book_Desc" class="layui-input" /></td>
<td><button class="layui-btn layui-btn-danger layui-btn-sm btnDelRow">删除</button></td>
</tr>
</table>
</div>
<div style="width:144px;margin:0 auto">
<div style="width:144px;margin:0 auto;">
<button class="layui-btn layui-btn-normal" id="btnSave">保存</button>
<button class="layui-btn layui-btn-primary" id="btnCancel">取消</button>
</div>
</div>
</div>
</div>

3.在View视图中 操作dom

//获取主键
var Id = "@ViewBag.Id";
//调用方法
Get_Single(Id);
/*获取查询数据*/
function Get_Single(Id) {
$.get("../BorrowBook/Query?Id=" + Id, function (msg) {
if ($.isEmptyObject(msg) == false) {
$.each(msg.bookstype, function (i, obj) {
$("#book_Type_Id").val(obj.book_Type_id);
$("#book_Type_Name").val(obj.book_Type_Name);
$("#book_Type_Des").val(obj.book_Type_Des);
});
var str_row = '';
$("#tab tr:gt(0)").remove();
str_row += '<tr class="list">';
$.each(msg.books, function (i, obj) {
str_row += '<td><input type="text" name="book_Num" value="' + obj.book_Num + '" id="' + obj.book_Id + '" class="layui-input"/></td>';
str_row += '<td><input type="text" name="book_Name" value="' + obj.book_Name + '" class="layui-input"/></td>';
str_row += '<td><input type="text" name="book_Desc" value="' + obj.book_Desc + '" class="layui-input"/></td>';
str_row += '<td><button class="layui-btn layui-btn-danger layui-btn-sm btnDelRow">删除</button></td>';
str_row += '</tr>';
});
$("#tab").append(str_row);
}
});
}

最终效果:

.net Dapper 实践系列(4) ---数据查询(Layui+Ajax+Dapper+MySQL)的更多相关文章

  1. .net Dapper 实践系列(1) ---项目搭建(Layui+Ajax+Dapper+MySQL)

    目录 写在前面 一.前期准备 1.在MySQL创建数据库 2.创建项目 3.安装程序包 4.添加插件 5.添加DbOption文件夹 6.添加实体类 写在前面 学习并实践使用Dapper 这个小型的O ...

  2. .net Dapper 实践系列(5) ---事务编辑(Layui+Ajax+Dapper+MySQL)

    目录 写在前面 实践步骤 写在前面 上一小节,我们总结了根据Id查询多表数据,最后返回Json对象给前台的例子.接下来,在这一小节我们要实现多表编辑的操作. 实践步骤 因为上一小节以及创建了Edit视 ...

  3. .net Dapper 实践系列(6) ---事务删除(Layui+Ajax+Dapper+MySQL)

    目录 写在前面 实现步骤 写在最后 写在前面 上一小节,总结了事务多表更新的两种方法.一个是只更新原来的数据,一个是先删除原来的数据再往里面添加新的数据.而这一小节,说的是事务的多表删除. 实现步骤 ...

  4. .net Dapper 实践系列(2) ---事务添加(Layui+Ajax+Dapper+MySQL)

    目录 写在前面 问题描述 解决方法 具体实现 写在前面 前面我们已经搭建好了项目,这一小节我们使用Dapper 中的事务实现一对多的添加操作. 问题描述 在做添加的时候很头疼需要从页面传递一组数据到后 ...

  5. .net Dapper 实践系列(3) ---数据显示(Layui+Ajax+Dapper+MySQL)

    目录 写在前面 产生问题 解决方案 写在前面 上一小节,我们使用Dapper 里事务实现了一对多关系的添加.这一小节,主要记录如何使用Dapper 实现多表的查询显示. 产生问题 在mvc控制器中查询 ...

  6. 【MySQL作业】SELECT 数据查询——美和易思MySQL运算符应用习题

    点击打开所使用到的数据库>>> 1.查询指定姓名的客户(如"张晓静")的地址和电话号码. select address 地址, phone 电话号码 from c ...

  7. ASP.NET Web API实践系列07,获取数据, 使用Ninject实现依赖倒置,使用Knockout实现页面元素和视图模型的双向绑定

    本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据. 在Models文件夹下创 ...

  8. Influx Sql系列教程九:query数据查询基本篇二

    前面一篇介绍了influxdb中基本的查询操作,在结尾处提到了如果我们希望对查询的结果进行分组,排序,分页时,应该怎么操作,接下来我们看一下上面几个场景的支持 在开始本文之前,建议先阅读上篇博文: 1 ...

  9. Influx Sql系列教程八:query数据查询基本篇

    前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握一定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操作的同时,也会给出InfluxSql与SQL之间的一些差别 ...

随机推荐

  1. 第01组 团队Git现场编程实战

    目录 一.组员职责分工 二.github 的提交日志截图(鼓励小粒度提交) 三.程序运行截图 四.程序运行环境 五.GUI界面 六.基础功能实现 七.鼓励有想法且有用的功能 八.遇到的困难及解决方法 ...

  2. Appium-Python-Windows 环境搭建

    目录 1.安装JDK 2.安装Android SDK 3.安装Node.js 4.安装Appium server 5.安装Python 6.安装Appium-Python-Client 7.安装pyt ...

  3. How to Use Convolutional Neural Networks for Time Series Classification

    How to Use Convolutional Neural Networks for Time Series Classification 2019-10-08 12:09:35 This blo ...

  4. opencv 图像resize

    这是文档中的函数原型 cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) 参数说明src:要resize的原图,应该是一个矩阵 dsi ...

  5. SpatiaLite, load spatial extension first

  6. 解决python3.7无法使用HTMLTestRunner.py生成html测试报告的问题2019.04

    **一:首先下载这个HTMLTestRunner.py文件:链接: https://pan.baidu.com/s/1jQFsMYLM3ysY6shgRF40Kw 提取码: evq2二:把该文件放在p ...

  7. 移动端Web框架

    [参考]移动端 UI设计尺寸(一)篇 [参考]移动端界面设计之尺寸篇 [参考]介绍几个移动web app开发框架 [参考]移动webapp前端ui用哪个框架好 H5 做移动开发也分两种,一种就是正常的 ...

  8. openvswitch2.11.0修改源码后重新编译

    一:推文 https://www.jianshu.com/p/923f49c290f5(可以删除运行当中的DataPath内核) https://github.com/ebiken/doc-netwo ...

  9. Ajax验证

    import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactor ...

  10. element ui 下拉框绑定对象并且change传多个参数

    废话不说直接上代码说明真相. <template> <div class="hello"> <span>可以设置的属性 value-key=&q ...