Mvc调用Api的显示、添加+二级联动

一、显示的DAL层代码

public List<ViewModel> LoadShow(string Dname, int? Cid, int? Eid, int? Ctid, int pageindex, int pagesize, out int totalcount, out int totalpage)
        {
            var query = from a in mm.DeliveryInfos
                        join b in mm.Cities on a.Cid equals b.Cid
                        where b.Cityid == 0
                        join c in mm.Cities on a.Ctid equals c.Cid
                        where c.Cityid > 0
                        join d in mm.Expresses on a.Eid equals d.Eid
                        select new ViewModel
                        {
                            Cid = b.Cid,
                            Cname = b.Cname,
                            Cityid = b.Cityid,
                            Eid = d.Eid,
                            Ename = d.Ename,
                            Ctid = a.Ctid,
                            Did = a.Did,
                            Dname = a.Dname,
                            ImgCp = a.ImgCp,
                            Name = a.Name,
                            Phone = a.Phone,
                            Site = a.Site,
                            State = a.State
                        };
            if (!string.IsNullOrWhiteSpace(Dname))
            {
                query = query.Where(k => k.Dname.Contains(Dname));
            }
            if (Cid != null)
            {
                query = query.Where(k => k.Cid == Cid);
            }
            if (Eid != null)
            {
                query = query.Where(k => k.Eid == Eid);
            }
            if (Ctid != null)
            {
                query = query.Where(k => k.Cityid == Ctid);
            }
            totalcount = query.Count();
            totalpage = Convert.ToInt32(Math.Ceiling(totalcount * 1.0 / pagesize));
            return query.OrderBy(k => k.Did).Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();

 

二、添加的DAL层代码

public int Add(DeliveryInfo d)
        {
            mm.DeliveryInfos.Add(d);
            return mm.SaveChanges();
        }

 

三、二级联动的DAL层代码

public List<City> CityType(int Cityid)
        {
            return mm.Cities.Where(k => k.Cityid == Cityid).ToList();
        }

 

四、显示的视图层代码Ajax方法

<div>
    <table class="table table-bordered">
        <tr style="background-color:coral;color:azure">
            <td colspan="8">产品发货管理</td>
        </tr>
        <tr>
            <td colspan="8">
                产品名称 <input type="text" id="Dname" />
                快递公司
                <select id="Express">
                    <option>所有</option>
                </select>
                <select id="Province" onchange="Shi()">
                </select>
                <select id="City">
                </select>
                <input type="button" value="查询" class="btn btn-info" onclick="Load()"/>
                <input type="button" value="添加" class="btn" style="background-color:coral;color:azure"  />
            </td>
        </tr>
            <tr style="background-color:coral;color:azure">
                <td>产品名称</td>
                <td>收货人</td>
                <td>收货人手机</td>
                <td>收货地址</td>
                <td>快递公司</td>
                <td>图片</td>
                <td>状态</td>
                <td>操作</td>
            </tr>
        <tbody id="tblist"></tbody>
    </table>
</div>
<span id="pageinfo"></span>
<a href="#" onclick="page('F')">首页</a>
<a href="#" onclick="page('P')">上页</a>
<a href="#" onclick="page('N')">下页</a>
<a href="#" onclick="page('L')">尾页</a>
<script>
    var pageindex = 1;
    var pagesize = 3;
    var totalcount = 0;
    var totalpage = 0;
    $(function () {
        Sheng();
        Express();
        Load();
    })
    function Sheng() {
        $("#Province").append("<option>请选择</option>")
        $.get('http://localhost:51198/api/Default/CityType?Cityid=0', k => {
            $(k).each(function () {
                $("#Province").append("<option value=" + this.Cid + ">" + this.Cname + "</option>")
            })
        })
    }
    function Shi() {
        var id = $("#Province").val();
        $("#City").empty();
        $("#City").append("<option>请选择</option>")
        $.get('http://localhost:51198/api/Default/CityType?Cityid=' + id, k => {
            $(k).each(function () {
                $("#City").append("<option value=" + this.Cid + ">" + this.Cname + "</option>")
            })
        })
    }
    function Express() {
        $.get('http://localhost:51198/api/Default/ExpressesType', k => {
            $(k).each(function () {
                $("#Express").append("<option value=" + this.Eid + ">" + this.Ename + "</option>")
            })
        })
    }
    function Load() {
        $.get('http://localhost:51198/api/Default/LoadShow', {
            Dname: $("#Dname").val(),
            Cid: $("#Province").val(),
            Eid: $("#Express").val(),
            Ctid: $("#City").val(),
            pageindex: pageindex,
            pagesize: pagesize
        }, k => {
            totalcount=k.totalcount
            totalpage=k.totalpage
            var slist = '';
            $("#tblist").empty();
            $(k.list).each(function () {
                slist += '<tr>'
                    + '<td>' + this.Dname+'</td>'
                    + '<td>' + this.Name+'</td>'
                    + '<td>' + this.Phone+'</td>'
                    + '<td>' + this.Site + '</td>'
                    + '<td>' + this.Ename + '</td>'
                    + '<td></td>'
                    + '<td style="color:' + (this.State ? "green" : "red") + '">' + (this.State ? "已发货" : "未发货") + '</td>'
                    + '<td><a onclick="Del(' + this.Did + ')">删除</a></td>'
                    +'</tr>'
            })
            $("#tblist").html(slist);
            $("#pageinfo").text("共" + totalcount + "条信息,每页" + pagesize + "条,当前" + pageindex + "/" + totalpage + "页")
        })
    }
    function Del(id) {
        if (confirm("确定要删除吗?")) {
            $.get('http://localhost:51198/api/Default/Del/?id=' + id, k => {
                if (k > 0) {
                    alert("删除成功!!!");
                    Load();
                }
            })
        }
    }
    function page(k) {
        switch (k) {
            case 'F':
                pageindex=1
                break;
            case 'P':
                pageindex = pageindex <= 1 ? pageindex : pageindex - 1
                break;
            case 'N':
                pageindex = pageindex >= totalpage ? pageindex : pageindex+1
                break;
            case 'L':
                pageindex = totalpage
                break;
        }
        Load();
    }
</script>

 

五、添加的视图层代码Ajax方法

 function LodaAdd() {
        $.post('http://localhost:51198/api/Default/Add', {
            Dname: $("#Dname").val(),
            Name: $("#Name").val(),
            Phone: $("#Phone").val(),
            Cid: $("#Province").val(),
            Ctid: $("#City").val(),
            Site: $("#Site").val(),
            Eid: $("#Express").val(),
            ImgCp:"",
            State: $("[name=State]:checked").val()
        }, k => {
            if (k > 0) {
                alert("添加成功!");
                location.href = "/Mvc/Index";
            }
        })
    }

 

六、二级联动的视图层代码

$(function () {
        Sheng();
        Express();
    })
    function Sheng() {
        $("#Province").append("<option>请选择</option>")
        $.get('http://localhost:51198/api/Default/CityType?Cityid=0', k => {
            $(k).each(function () {
                $("#Province").append("<option value="+this.Cid+">" + this.Cname + "</option>")
            })
        })
    }
    function Shi() {
        var id = $("#Province").val();
        $("#City").empty();
        $("#City").append("<option>请选择</option>")
        $.get('http://localhost:51198/api/Default/CityType?Cityid=' + id, k => {
            $(k).each(function () {
                $("#City").append("<option value=" + this.Cid + ">" + this.Cname + "</option>")
            })
        })
    }

 

上一篇:MyBatis的多表查询笔记


下一篇:数据库查询优化