Die Verwendung von table.render in Laui
Der Front-End-Implementierungscode ist wie in der Abbildung dargestellt (vollständiger Code):
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>数据表格</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> <link rel="stylesheet" href="../../layuiadmin/layui/css/layui.css" media="all"> <link rel="stylesheet" href="../../layuiadmin/style/admin.css" media="all"> </head> <body> <div class="layui-card layadmin-header"> <div class="layui-breadcrumb" lay-filter="breadcrumb"> <a lay-href="">主页</a> <a><cite>组件</cite></a> <a><cite>数据表格</cite></a> <a><cite>开启头部工具栏</cite></a> </div> </div> <div class="layui-fluid"> <div class="layui-row layui-col-space15"> <div class="layui-col-md12"> <div class="layui-card"> <div class="layui-card-header">开启头部工具栏</div> <div class="layui-card-body"> <table class="layui-hide" id="test-table-toolbar" lay-filter="test-table-toolbar"></table> <script type="text/html" id="test-table-toolbar-toolbarDemo"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button> <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button> <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button> </div> </script> <script type="text/html" id="test-table-toolbar-barDemo"> <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> </div> </div> </div> </div> </div> <script src="../../layuiadmin/layui/layui.js"></script> <script> layui.config({ base: '../../layuiadmin/' //静态资源所在路径 }).extend({ index: 'lib/index' //主入口模块 }).use(['index', 'table'], function(){ var admin = layui.admin ,table = layui.table; table.render({ elem: '#test-table-toolbar' ,url:"http://localhost:8090/program-web/api/magic_change/oj/problem/page_list?userId=youcongtech" ,toolbar: '#test-table-toolbar-toolbarDemo' ,title: '程序设计题绑定' ,cols: [[ {type: 'checkbox', fixed: 'left'}, {field:'problemId', width:300, title: 'ID', sort: true} ,{field:'title', width:400, title: '题目'} ,{width:215, align:'center', fixed: 'right', toolbar: '#test-table-toolbar-barDemo'} ]] ,page: true }); //头工具栏事件 table.on('toolbar(test-table-toolbar)', function(obj){ var checkStatus = table.checkStatus(obj.config.id); switch(obj.event){ case 'getCheckData': var data = checkStatus.data; layer.alert(JSON.stringify(data)); break; case 'getCheckLength': var data = checkStatus.data; layer.msg('选中了:'+ data.length + ' 个'); break; case 'isAll': layer.msg(checkStatus.isAll ? '全选': '未全选'); break; }; }); //监听行工具事件 table.on('tool(test-table-toolbar)', function(obj){ var data = obj.data; if(obj.event === 'del'){ layer.confirm('真的删除行么', function(index){ obj.del(); layer.close(index); }); } else if(obj.event === 'edit'){ layer.prompt({ formType: 2 ,value: data.email }, function(value, index){ obj.update({ email: value }); layer.close(index); }); } }); }); </script> </body> </html>
Der Kern-JS-Code lautet wie folgt:
table.render({ elem: '#test-table-toolbar' ,url:"http://localhost:8090/program-web/api/magic_change/oj/problem/page_list?userId=youcongtech" ,toolbar: '#test-table-toolbar-toolbarDemo' ,title: '程序设计题绑定' ,cols: [[ {type: 'checkbox', fixed: 'left'}, {field:'problemId', width:300, title: 'ID', sort: true} ,{field:'title', width:400, title: '题目'} ,{width:215, align:'center', fixed: 'right', toolbar: '#test-table-toolbar-barDemo'} ]] ,page: true });
Das erforderliche Hintergrund-Rückgabedatenformat muss sein:
{ "msg": "success", "code": "0", "data": [ { "title": "for循环输出", "problemId": 1139 }, { "title": "测试2", "problemId": 1138 }, { "title": "测试1", "problemId": 1137 }, { "title": "for循环-Plus", "problemId": 1140 }, { "title": "第一个C++程序", "problemId": 1141 } ] }
Andernfalls werden relevante Eingabeaufforderungen angezeigt (z. B. muss der Wert des Codes 0 und nicht 000000 sein, und die entsprechenden Daten müssen andernfalls wie oben sein). Es wird nicht automatisch in Spalten abgebildet.
Der Hintergrundimplementierungscode lautet wie folgt:
Steuerschichtcode (Routing)
@GetMapping("/page_list") @ApiOperation(value="根据用户ID获取题目分页列表",httpMethod="GET",notes="根据用户ID获取题目分页列表") public JSONObject page_list(@RequestParam String userId, @RequestParam (value="page") String pageno, @RequestParam (value="limit") String pagesize) { System.out.println("userId:"+userId+"|| pageno:"+pageno+"||pagesize:"+pagesize); JSONObject json = new JSONObject(); //当前页 Integer page = Integer.parseInt(pageno.trim()); //每页的数量 Integer size = Integer.parseInt(pagesize.trim()); Map<String, Object> paramMap = new HashMap<>(); paramMap.put("userId", userId); paramMap.put("start", (page - 1) * size); //当前页的数量 paramMap.put("size", size); //当前页 List<Problem> problemList = problemService.getProblemPageListInfo(paramMap); int count =problemService.getProblemPageTotalCount(paramMap); if(!problemList.isEmpty()) { json.put("msg", "success"); json.put("code", "0"); json.put("data", problemList); json.put("count", count); }else { json.put(CommonEnum.RETURN_MSG, "error"); json.put(CommonEnum.RETURN_CODE, "222222"); } return json; }
Dienst und seine Implementierungsklasse:
Dienst:
public interface ProblemService extends IService<Problem> { List<Problem> getProblemPageListInfo(Map<String,Object> paramMap); Integer getProblemPageTotalCount(Map<String,Object> paramMap); }
Dienstimplementierungsklasse:
@Service public class ProblemServiceImpl extends ServiceImpl<ProblemDao, Problem> implements ProblemService { @Autowired private ProblemDao problemDao; @Override public List<Problem> getProblemPageListInfo(Map<String, Object> paramMap) { return problemDao.getProblemPageListInfo(paramMap); } @Override public Integer getProblemPageTotalCount(Map<String, Object> paramMap) { return problemDao.getProblemPageTotalCount(paramMap); } }
ProblemDao.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.sass.mapper.ProblemDao"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.test.sass.entity.Problem"> <id column="problem_id" property="problemId" /> <result column="title" property="title" /> <result column="description" property="description" /> <result column="input" property="input" /> <result column="output" property="output" /> <result column="sample_input" property="sampleInput" /> <result column="sample_output" property="sampleOutput" /> <result column="spj" property="spj" /> <result column="hint" property="hint" /> <result column="source" property="source" /> <result column="in_date" property="inDate" /> <result column="time_limit" property="timeLimit" /> <result column="memory_limit" property="memoryLimit" /> <result column="defunct" property="defunct" /> <result column="accepted" property="accepted" /> <result column="submit" property="submit" /> <result column="solved" property="solved" /> <result column="p_ladder_level" property="pLadderLevel" /> <result column="p_ladder_type" property="pLadderType" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> problem_id AS problemId, title, description, input, output, sample_input AS sampleInput, sample_output AS sampleOutput, spj, hint, source, in_date AS inDate, time_limit AS timeLimit, memory_limit AS memoryLimit, defunct, accepted, submit, solved </sql> <select id="getProblemPageListInfo" resultMap="BaseResultMap"> SELECT DISTINCT problem.problem_id,problem.title FROM privilege AS p LEFT JOIN problem ON( REPLACE(p.rightstr,'p','') = problem.problem_id) WHERE p.user_id =#{userId} AND problem.problem_id !=0 AND p.rightstr != 'problem_editor' AND p.rightstr != 'contenst_creator' limit #{start},#{size} </select> <select id="getProblemPageTotalCount" resultType="Integer"> SELECT COUNT(DISTINCT problem.problem_id) FROM privilege AS p LEFT JOIN problem ON( REPLACE(p.rightstr,'p','') = problem.problem_id) WHERE p.user_id =#{userId} AND problem.problem_id !=0 AND p.rightstr != 'problem_editor' AND p.rightstr != 'contenst_creator' </select> </mapper>
Entitätsklasse:
public class Problem extends Model<Problem> { private static final long serialVersionUID = 1L; @TableId(value = "problem_id", type = IdType.AUTO) private Integer problemId; private String title; private String description; private String input; private String output; @TableField("sample_input") private String sampleInput; @TableField("sample_output") private String sampleOutput; private String spj; private String hint; private String source; @TableField("in_date") private String inDate; @TableField("time_limit") private String timeLimit; @TableField("memory_limit") private String memoryLimit; private String defunct; private Integer accepted; private Integer submit; private Integer solved; @TableField(exist=false) private String pLadderLevel; @TableField(exist=false) private String pLadderType; public Integer getProblemId() { return problemId; } public void setProblemId(Integer problemId) { this.problemId = problemId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getInput() { return input; } public void setInput(String input) { this.input = input; } public String getOutput() { return output; } public void setOutput(String output) { this.output = output; } public String getSampleInput() { return sampleInput; } public void setSampleInput(String sampleInput) { this.sampleInput = sampleInput; } public String getSampleOutput() { return sampleOutput; } public void setSampleOutput(String sampleOutput) { this.sampleOutput = sampleOutput; } public String getSpj() { return spj; } public void setSpj(String spj) { this.spj = spj; } public String getHint() { return hint; } public void setHint(String hint) { this.hint = hint; } public String getSource() { return source; } public void setSource(String source) { this.source = source; } public String getInDate() { return inDate; } public void setInDate(String inDate) { this.inDate = inDate; } public String getTimeLimit() { return timeLimit; } public void setTimeLimit(String timeLimit) { this.timeLimit = timeLimit; } public String getMemoryLimit() { return memoryLimit; } public void setMemoryLimit(String memoryLimit) { this.memoryLimit = memoryLimit; } public String getDefunct() { return defunct; } public void setDefunct(String defunct) { this.defunct = defunct; } public Integer getAccepted() { return accepted; } public void setAccepted(Integer accepted) { this.accepted = accepted; } public Integer getSubmit() { return submit; } public void setSubmit(Integer submit) { this.submit = submit; } public Integer getSolved() { return solved; } public void setSolved(Integer solved) { this.solved = solved; } public String getpLadderLevel() { return pLadderLevel; } public void setpLadderLevel(String pLadderLevel) { this.pLadderLevel = pLadderLevel; } public String getpLadderType() { return pLadderType; } public void setpLadderType(String pLadderType) { this.pLadderType = pLadderType; } @Override protected Serializable pkVal() { return this.problemId; } @Override public String toString() { return "Problem [problemId=" + problemId + ", title=" + title + ", description=" + description + ", input=" + input + ", output=" + output + ", sampleInput=" + sampleInput + ", sampleOutput=" + sampleOutput + ", spj=" + spj + ", hint=" + hint + ", source=" + source + ", inDate=" + inDate + ", timeLimit=" + timeLimit + ", memoryLimit=" + memoryLimit + ", defunct=" + defunct + ", accepted=" + accepted + ", submit=" + submit + ", solved=" + solved + ", pLadderLevel=" + pLadderLevel + ", pLadderType=" + pLadderType + "]"; } }
Der Effekt ist wie folgt :
Für mehr Laui-Wissen folgen Sie bitte der Spalte Tutorial zur Verwendung von Laui auf der chinesischen PHP-Website.
Das obige ist der detaillierte Inhalt vonDie Verwendung von table.render in Laui. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Schritte zur Sprungeinstellung der Layui-Anmeldeseite: Sprungcode hinzufügen: Fügen Sie im Anmeldeformular ein Beurteilungsereignis hinzu, klicken Sie auf die Schaltfläche „Senden“ und springen Sie nach erfolgreicher Anmeldung über window.location.href zur angegebenen Seite. Ändern Sie die Formularkonfiguration: Fügen Sie dem Formularelement von „lay-filter="login" ein verstecktes Eingabefeld mit dem Namen „redirect“ und dem Wert der Zielseitenadresse hinzu.

Layui bietet eine Vielzahl von Methoden zum Abrufen von Formulardaten, einschließlich des direkten Abrufens aller Felddaten des Formulars, des Abrufens des Werts eines einzelnen Formularelements, der Verwendung der formAPI.getVal()-Methode zum Abrufen des angegebenen Feldwerts, der Serialisierung der Formulardaten usw Wenn Sie es als AJAX-Anforderungsparameter verwenden und das Formularübermittlungsereignis abhören, werden Daten abgerufen.

Ein adaptives Layout kann mithilfe der Responsive-Layout-Funktion des Laui-Frameworks erreicht werden. Die Schritte umfassen: Referenzieren des Laui-Frameworks. Definieren Sie einen adaptiven Layout-Container und legen Sie die Klasse „layui-container“ fest. Verwenden Sie reaktionsfähige Haltepunkte (xs/sm/md/lg), um Elemente unter bestimmten Haltepunkten auszublenden. Geben Sie die Elementbreite mithilfe des Rastersystems (layui-col-) an. Abstand über Offset erzeugen (layui-offset-). Verwenden Sie reaktionsfähige Dienstprogramme (layui-invisible/show/block/inline), um die Sichtbarkeit von Elementen und deren Darstellung zu steuern.

Die Methode zur Verwendung von Laui zum Übertragen von Daten ist wie folgt: Verwenden Sie Ajax: Erstellen Sie das Anforderungsobjekt, legen Sie die Anforderungsparameter (URL, Methode, Daten) fest und verarbeiten Sie die Antwort. Integrierte Methoden verwenden: Vereinfachen Sie die Datenübertragung mit integrierten Methoden wie $.post, $.get, $.postJSON oder $.getJSON.

Der Unterschied zwischen Laui und Vue spiegelt sich hauptsächlich in Funktionen und Anliegen wider. Layui konzentriert sich auf die schnelle Entwicklung von UI-Elementen und stellt vorgefertigte Komponenten zur Vereinfachung der Seitenkonstruktion bereit. Vue ist ein Full-Stack-Framework, das sich auf Datenbindung, Komponentenentwicklung und Statusverwaltung konzentriert und sich besser für die Erstellung komplexer Anwendungen eignet. Layui ist leicht zu erlernen und eignet sich zum schnellen Erstellen von Seiten; Vue hat eine steile Lernkurve, hilft aber beim Erstellen skalierbarer und leicht zu wartender Anwendungen. Abhängig von den Projektanforderungen und dem Kenntnisstand des Entwicklers kann das passende Framework ausgewählt werden.

Laui ist ein Front-End-UI-Framework, das eine Fülle von UI-Komponenten, Tools und Funktionen bereitstellt, um Entwicklern dabei zu helfen, schnell moderne, reaktionsfähige und interaktive Webanwendungen zu erstellen. Zu seinen Funktionen gehören: flexibles und leichtes, modulares Design, umfangreiche Komponenten, leistungsstarke Tools und einfache Bedienung Anpassung. Es wird häufig bei der Entwicklung verschiedener Webanwendungen eingesetzt, darunter Managementsysteme, E-Commerce-Plattformen, Content-Management-Systeme, soziale Netzwerke und mobile Anwendungen.

Das Laui-Framework ist ein JavaScript-basiertes Front-End-Framework, das eine Reihe benutzerfreundlicher UI-Komponenten und Tools bereitstellt, um Entwicklern beim schnellen Erstellen reaktionsfähiger Webanwendungen zu helfen. Zu seinen Funktionen gehören: modular, leichtgewichtig, reaktionsschnell und mit vollständiger Dokumentation und Community-Unterstützung. Laui wird häufig bei der Entwicklung von Management-Backend-Systemen, E-Commerce-Websites und mobilen Anwendungen eingesetzt. Die Vorteile sind eine schnelle Inbetriebnahme, eine verbesserte Effizienz und eine einfache Wartung. Die Nachteile sind eine schlechte Anpassung und langsame Technologieaktualisierungen.

Laui und Vue sind Front-End-Frameworks. Laui ist eine leichtgewichtige Bibliothek, die UI-Komponenten und -Tools bereitstellt. Vue ist ein umfassendes Framework, das UI-Komponenten, Statusverwaltung, Datenbindung, Routing und andere Funktionen bereitstellt. Laui basiert auf einer modularen Architektur und Vue basiert auf einer Komponentenarchitektur. Laui hat ein kleineres Ökosystem, Vue hat ein großes und aktives Ökosystem. Die Lernkurve von Laui ist niedrig und die Lernkurve von Vue ist steil. Laui eignet sich für kleine Projekte und die schnelle Entwicklung von UI-Komponenten, während Vue für große Projekte und Szenarien geeignet ist, die umfangreiche Funktionen erfordern.
