工学义子 2024-05-22 15:51 采纳率: 51.1%
浏览 9
已结题

easyui的datagrid数据卡片式显示处理

如何让easyui的datagrid的只显示限定行且记录竖着排列(即卡片式显示),如图所示:

img

这是我目前做到的效果:

img

下面是我的代码,应该如何修改才能达到图片上的效果:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<%=basePath%>ext/easyui/themes/green/easyui.css?t=34355">
<link rel="stylesheet" type="text/css" href="<%=basePath%>ext/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>ext/easyui/themes/color.css">
<link rel="stylesheet" type="text/css" href="<%=basePath%>ext/farm/farm.css">
<script type="text/javascript" src="<%=basePath%>ext/easyui/jquery.min.js"></script>
<script type="text/javascript" src="<%=basePath%>ext/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="<%=basePath%>ext/easyui/plugins/jquery.edatagrid.js"></script>
<script type="text/javascript" src="<%=basePath%>ext/easyui/locale/easyui-lang-zh_CN.js"></script>
<script type="text/javascript" src="<%=basePath%>ext/farm/helper.js?346t"></script>
<title>种子仓库</title>
<style>
</style>
</head>
<body>
    <div class="easyui-dialog" style="width:800px;height:405px;" title="种子仓库">
        <table id="grid">
            
        </table>
    </div>
    <script type="text/javascript">
        var grid;
        $(document).ready(function() {
    
            //配置表格        
            grid = $('#grid').edatagrid({
    
                title: '',
    
                width: 785,
    
                height: 365,
    
                method: 'post',
    
                url: '<%=basePath%>seed/gridData',
    
                border: false,
    
                rownumbers: false,
    
                remoteSort: true,
    
                nowrap: false,
    
                singleSelect: true,
    
                fitColumns: true,
    
                pagination: true,
    
                striped: true,
    
                autoSave: true,
                
                checkOnSelect:true,
                
                idField: "id",
                
                columns: [
    
                    [{
    
                        field: 'id',
    
                        title: 'ID',
    
                        width: 70,
    
                        sortable: true,
    
                        align: 'center',
    
                        halign: 'center',
                        
                        hidden:true
    
                    }, {
    
                        field: 'tips',
    
                        title: '种子信息',
    
                        width: 70,
    
                        sortable: true,
    
                        align: 'center',
    
                        halign: 'center',
                        
                        formatter: function(value, row) {
    
                            return '小贴士:'+value;
                            
                        }
    
                    },{
    
                        field: 'op',
    
                        title: '购买',
    
                        width: 80,
    
                        align: 'center',
    
                        halign: 'center',
                       
                        formatter: function(value,row) {
                            
                            let rowIndex=grid.edatagrid("getRowIndex",row);
                            let button="<input onclick ='buySeedByName()' type='button' value='我要购买'>";
                            return button;
    
                        }
    
                    }]
    
                ],
                
                pageSize: 5,
    
                pageList: [5, 10, 15, 20],
    
                destroyMsg: {
    
                    norecord: {
    
                        title: '警告',
    
                        msg: '首先需要选中记录,然后在点击删除按钮'
    
                    },
    
                    confirm: {
    
                        title: '确认',
    
                        msg: '是否删除选中记录?'
    
                    }
    
                },
    
                onSuccess: function(index, result) {
    
                    console.log(result);
    
                    $("#msgBox").text(result.msg);
    
                },
    
                onDestroy: function(index, result) {
    
                    console.log(result);
    
                    $("#msgBox").text(result.msg);
    
                }
    
            });
    
        });
    </script>
</body>
</html>

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-22 15:51
    关注

    引自免费微信小程序:皆我百晓生

    为了实现类似图1中的卡片式显示,你需要对表格的样式进行调整,并添加一些额外的HTML结构。这里是一个修改后的示例代码,包括了必要的CSS样式和HTML结构调整:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <html>
    <head>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet" type="text/css" href="<%=basePath%>ext/easyui/themes/green/easyui.css?t=34355">
    <link rel="stylesheet" type="text/css" href="<%=basePath%>ext/easyui/themes/icon.css">
    <link rel="stylesheet" type="text/css" href="<%=basePath%>ext/easyui/themes/color.css">
    <link rel="stylesheet" type="text/css" href="<%=basePath%>ext/farm/farm.css">
    <style>
    /* 添加新的CSS样式 */
    .card-container {
      display: flex;
      flex-wrap: wrap;
      justify-content: center;
    }
    
    .card {
      position: relative;
      background-color: #fff;
      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
      border-radius: 4px;
      margin: 10px;
      padding: 15px;
      width: calc(25% - 20px);
      min-width: 250px;
      max-width: 300px;
      word-break: break-word;
    }
    
    .card .card-header {
      font-weight: bold;
      text-align: center;
      margin-bottom: 10px;
    }
    
    .card .card-body {
      display: flex;
      flex-direction: column;
    }
    
    .card .card-footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding-top: 10px;
    }
    </style>
    </head>
    <body>
        <div class="easyui-dialog card-container" style="width:800px;height:405px;" title="种子仓库">
            <table id="grid">
                <!-- 去掉表头 -->
                <thead></thead>
                <tbody>
                </tbody>
            </table>
        </div>
        <script type="text/javascript">
            var grid;
            $(document).ready(function() {
    
                // 配置表格
                grid = $('#grid').edatagrid({
                    ...
                    columns: [
                        ...
                    ]
                });
    
                // 在表格加载完成后,重新构建卡片式布局
                grid.on('loadsuccess', function() {
                    var $tbody = $('#grid tbody');
                    $tbody.find('tr').each(function(i, tr) {
                        var $tr = $(tr);
                        var $tds = $tr.find('td');
    
                        // 创建卡片容器
                        var $card = $('<div class="card"></div>');
                        var $header = $('<div class="card-header"></div>');
                        var $body = $('<div class="card-body"></div>');
                        var $footer = $('<div class="card-footer"></div>');
    
                        // 设置卡片标题
                        $header.text($tds.eq(1).text()); // 种子信息
    
                        // 将其他列数据放入卡片主体
                        for (var j = 0; j < $tds.length; j++) {
                            if (j !== 1) { // 忽略标题列
                                var $content = $('<p>' + $tds.eq(j).text() + '</p>');
                                $body.append($content);
                            }
                        }
    
                        // 设置购买按钮
                        var $btn = $('<button class="easyui-linkbutton">我要购买</button>');
                        $footer.append($btn);
    
                        $card.append($header).append($body).append($footer);
                        $tbody.parent().prepend($card);
                        $tr.remove(); // 删除原表格行
                    });
                });
            });
        </script>
    </body>
    </html>
    

    在这个修改后的代码中,我做了以下改动:

    1. 添加了一个名为.card-container的CSS类,用于创建一个卡片容器,其中包含多个卡片。
    2. 对每行数据,我创建了一个.card元素,并将相关信息添加到.card-header(标题)、.card-body(主体)和.card-footer(底部)部分。
    3. 使用grid.on('loadsuccess', ...)事件,在表格数据加载成功后,遍历每一行并将其转换为卡片格式。

    这样,你应该就能得到类似图1所示的卡片式显示效果。如果你想要进一步调整卡片的样式,可以根据需要修改CSS。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月29日
  • 创建了问题 5月22日