Heim Web-Frontend js-Tutorial Detaillierte Erläuterung der JS-Tabellenkomponenten-Artefakt-Bootstrap-Tabelle (Basisversion)

Detaillierte Erläuterung der JS-Tabellenkomponenten-Artefakt-Bootstrap-Tabelle (Basisversion)

Jan 04, 2017 pm 01:24 PM

1. Einführung von Bootstrap Table

Für die Einführung von Bootstrap Table gibt es im Allgemeinen zwei Methoden:

1. Laden Sie den Quellcode direkt herunter und fügen Sie ihn dem Projekt hinzu .
Da Bootstrap Table eine Komponente von Bootstrap ist, hängt es von Bootstrap ab. Zuerst müssen wir einen Verweis auf Bootstrap hinzufügen.

2. Verwenden Sie unser magisches Nuget
, um Nuget zu öffnen und nach diesen beiden Paketen zu suchen

JS表格组件神器bootstrap table详解(基础版)

Bootstrap ist bereits die neueste Version 3.3.5, wir haben gerade Installieren Sie es direkt.

JS表格组件神器bootstrap table详解(基础版)

Die Version von Bootstrap Table ist tatsächlich 0,4, was zu betrügerisch ist. Daher schlägt der Blogger vor, das Bootstrap Table-Paket direkt aus dem Quellcode herunterzuladen. Die neueste Version von Bootstrap Table scheint 1.9.0 zu sein.

2. Detaillierte Code-Erklärung
Sobald die Komponente referenziert ist, ist die Verwendung natürlich einfach, aber es gibt viele Details, die behandelt werden müssen. Wir werden später über die Details sprechen Schauen Sie sich zunächst an, wie Sie es verwenden.
1. Referenzieren Sie relevante Komponenten auf der CSHTML-Seite und definieren Sie eine leere Tabelle.

@{
 Layout = null;
}
<!DOCTYPE html>
<html>
<head>
 <meta name="viewport" content="width=device-width" />
 <title>BootStrap Table使用</title>
 @*1、Jquery组件引用*@
 <script src="~/Scripts/jquery-1.10.2.js"></script>
 
 @*2、bootstrap组件引用*@
 <script src="~/Content/bootstrap/bootstrap.js"></script>
 <link href="~/Content/bootstrap/bootstrap.css" rel="stylesheet" />
  
 @*3、bootstrap table组件以及中文包的引用*@
 <script src="~/Content/bootstrap-table/bootstrap-table.js"></script>
 <link href="~/Content/bootstrap-table/bootstrap-table.css" rel="stylesheet" />
 <script src="~/Content/bootstrap-table/locale/bootstrap-table-zh-CN.js"></script>
  
 @*4、页面Js文件的引用*@
 <script src="~/Scripts/Home/Index.js"></script>
</head>
<body>
 <div class="panel-body" style="padding-bottom:0px;">
 <div class="panel panel-default">
 <div class="panel-heading">查询条件</div>
 <div class="panel-body">
 <form id="formSearch" class="form-horizontal">
  <div class="form-group" style="margin-top:15px">
  <label class="control-label col-sm-1" for="txt_search_departmentname">部门名称</label>
  <div class="col-sm-3">
  <input type="text" class="form-control" id="txt_search_departmentname">
  </div>
  <label class="control-label col-sm-1" for="txt_search_statu">状态</label>
  <div class="col-sm-3">
  <input type="text" class="form-control" id="txt_search_statu">
  </div>
  <div class="col-sm-4" style="text-align:left;">
  <button type="button" style="margin-left:50px" id="btn_query" class="btn btn-primary">查询</button>
  </div>
  </div>
 </form>
 </div>
 </div> 
 
 <div id="toolbar" class="btn-group">
 <button id="btn_add" type="button" class="btn btn-default">
 <span class="glyphicon glyphicon-plus" aria-hidden="true"></span>新增
 </button>
 <button id="btn_edit" type="button" class="btn btn-default">
 <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>修改
 </button>
 <button id="btn_delete" type="button" class="btn btn-default">
 <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>删除
 </button>
 </div>
 <table id="tb_departments"></table>
 </div>
</body>
</html>
Nach dem Login kopieren

Nachdem wir die erforderlichen Dateien eingegeben haben, ist es für uns am wichtigsten, eine leere Tabelle zu definieren, wie oben

Natürlich bietet die Bootstrap-Tabelle auch eine kurze Verwendung. Sie können verwandte Attribute wie „data-…“ direkt im Tabellen-Tag definieren, sodass Sie sie nicht in js registrieren müssen Diese Verwendung ist einfach und nicht einfach zu verwenden. Sie ist zu flexibel und schwierig zu handhaben, wenn wir auf eine erweiterte Verwendung wie Eltern-Kind-Tabellen stoßen. Daher verwenden wir die Tabellenkomponente weiterhin, indem wir sie in js initialisieren.
2. Js-Initialisierung

$(function () {
 
 //1.初始化Table
 var oTable = new TableInit();
 oTable.Init();
 
 //2.初始化Button的点击事件
 var oButtonInit = new ButtonInit();
 oButtonInit.Init();
 
});
 
 
var TableInit = function () {
 var oTableInit = new Object();
 //初始化Table
 oTableInit.Init = function () {
 $(&#39;#tb_departments&#39;).bootstrapTable({
 url: &#39;/Home/GetDepartment&#39;, //请求后台的URL(*)
 method: &#39;get&#39;,  //请求方式(*)
 toolbar: &#39;#toolbar&#39;, //工具按钮用哪个容器
 striped: true,  //是否显示行间隔色
 cache: false,  //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
 pagination: true,  //是否显示分页(*)
 sortable: false,  //是否启用排序
 sortOrder: "asc",  //排序方式
 queryParams: oTableInit.queryParams,//传递参数(*)
 sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
 pageNumber:1,  //初始化加载第一页,默认第一页
 pageSize: 10,  //每页的记录行数(*)
 pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
 search: true,  //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
 strictSearch: true,
 showColumns: true,  //是否显示所有的列
 showRefresh: true,  //是否显示刷新按钮
 minimumCountColumns: 2, //最少允许的列数
 clickToSelect: true, //是否启用点击选中行
 height: 500,  //行高,如果没有设置height属性,表格自动根据记录条数觉得表格高度
 uniqueId: "ID",  //每一行的唯一标识,一般为主键列
 showToggle:true,  //是否显示详细视图和列表视图的切换按钮
 cardView: false,  //是否显示详细视图
 detailView: false,  //是否显示父子表
 columns: [{
 checkbox: true
 }, {
 field: &#39;Name&#39;,
 title: &#39;部门名称&#39;
 }, {
 field: &#39;ParentName&#39;,
 title: &#39;上级部门&#39;
 }, {
 field: &#39;Level&#39;,
 title: &#39;部门级别&#39;
 }, {
 field: &#39;Desc&#39;,
 title: &#39;描述&#39;
 }, ]
 });
 };
 
 //得到查询的参数
 oTableInit.queryParams = function (params) {
 var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
 limit: params.limit, //页面大小
 offset: params.offset, //页码
 departmentname: $("#txt_search_departmentname").val(),
 statu: $("#txt_search_statu").val()
 };
 return temp;
 };
 return oTableInit;
};
 
 
var ButtonInit = function () {
 var oInit = new Object();
 var postdata = {};
 
 oInit.Init = function () {
 //初始化页面上面的按钮事件
 };
 
 return oInit;
};
Nach dem Login kopieren

Die Initialisierung der Tabelle ist ebenfalls sehr einfach. Definieren Sie einfach die relevanten Parameter. Einige der Parameter, die Blogger für wichtig halten, sind oben mit Anmerkungen versehen, und mehrere Parameter, die zum Initialisieren der Tabelle erforderlich sind, werden von Bloggern auch mit (*) gekennzeichnet. Wenn Ihre Tabelle auch zu viele Seitenanforderungen hat, verwenden Sie einfach die erforderlichen Parameter. Ebenso gibt es tatsächlich viele Parameter, die im Spaltenparameter festgelegt werden müssen, z. B. Spaltensortierung, Ausrichtung, Breite usw. Diese Blogger denken, dass es relativ einfach ist und nicht die Funktionen von Tabellen beinhaltet. Sie können sich einfach die API ansehen und es erledigen.
3. Die entsprechende Methode im Controller

public JsonResult GetDepartment(int limit, int offset, string departmentname, string statu)
{
var lstRes = new List<Department>();
for (var i = 0; i < 50; i++)
{
var oModel = new Department();
oModel.ID = Guid.NewGuid().ToString();
oModel.Name = "销售部" + i ;
oModel.Level = i.ToString();
oModel.Desc = "暂无描述信息";
lstRes.Add(oModel);
}
 
var total = lstRes.Count;
var rows = lstRes.Skip(offset).Take(limit).ToList();
return Json(new { total = total, rows = rows }, JsonRequestBehavior.AllowGet);
}
Nach dem Login kopieren

Hier ist zu beachten: Wenn es sich um serverseitiges Paging handelt, muss das zurückgegebene Ergebnis zwei Parameter enthalten: total und rows. Fehlendes oder falsches Schreiben führt dazu, dass die Tabelle keine Daten anzeigen kann. Im Gegensatz dazu wird beim clientseitigen Paging ein Sammlungsobjekt an das Frontend zurückgegeben.

4. Effekte und Beschreibungen

JS表格组件神器bootstrap table详解(基础版)

Lassen Sie uns ein paar Renderings veröffentlichen:

JS表格组件神器bootstrap table详解(基础版)

JS表格组件神器bootstrap table详解(基础版)

JS表格组件神器bootstrap table详解(基础版)

JS表格组件神器bootstrap table详解(基础版)

3. Problemzusammenfassung

Da die oben genannten Funktionen von Grund auf neu entwickelt wurden, möchte ich Bloggern mitteilen Eine Frage an meine Gartenfreunde. Dies sollte auch im Mittelpunkt des heutigen Artikels stehen.

1. Wenn der in js initialisierte Parameter sidePagination: „server“ auf „Paginieren“ auf dem Server eingestellt ist, muss unser Rückgabewert dem Front-End die Gesamtzahl der Datensätze und die Anzahl der Datensätze mitteilen Datensätze auf der aktuellen Seite, und dann weiß das Frontend, wie man paginiert. Und das Wichtigste ist, dass die Namen dieser beiden Parameter „total“ und „rows“ lauten müssen. Ich wusste das zunächst nicht, also habe ich „total“ und „row“ geschrieben. Dadurch kann die Anfrage an die GetDepartment-Methode im Hintergrund gehen. Die Rückgabewerte „total“ und „row“ haben auch Werte, aber das Frontend wird wie folgt angezeigt:

JS表格组件神器bootstrap table详解(基础版)

找了好半天原因。原来是row写错了,应该写成rows。可能这也是前天园友遇到的问题的原因。

2、第二个问题就是关于bootstrap页面样式的问题,我们使用过bootstrap的朋友应该知道,它里面所有的图标都是通过class = "glyphicon glyphicon-plus"这种方式去写的。按要求这样做了,可是新增、修改、删除前面的图标怎么都出不来。如下:

JS表格组件神器bootstrap table详解(基础版)

怎么回事呢?然后各种百度,最后发现原来是fonts文件夹的问题。我们在新建一个MVC项目的时候,会自动创建一个fonts文件夹

而我们的bootstrap.css是放在Content文件夹里面的,这样就导致找不到这些样式文件。最终通过谷歌浏览器查看控制台

JS表格组件神器bootstrap table详解(基础版)

原来它自动去Content里面找fonts文件夹了。这下就好办了,把我们的fonts文件夹拷贝到Content下不就行了吗。呵呵,原来真是这样,问题顺利解决。

3、关于中文。刚开始,没有引用 这个包,所以界面找不到记录是显示的是英文,如下:

JS表格组件神器bootstrap table详解(基础版)

后来也是查资料了解到,bootstrap table里面原来还有一个中文包,把它添加进来就好了。

4、第四点要说说表格自带的搜索功能,有上可知,在初始化表格的时候,通过设置search: true可以设置表格的搜索框出现并且可以进行模糊搜索。但是这个时候问题来了,我们采用的是服务端分页,每次返回到前台的只有本页的数据,这个时候我们再搜索的时候发现:搜索不了。这是什么原因呢?博主在谷歌里面调试bootstrap-table.js这个js发现里面有这样一段逻辑:

BootstrapTable.prototype.onSearch = function (event) {
var text = $.trim($(event.currentTarget).val());
 
// trim search input
if (this.options.trimOnSearch && $(event.currentTarget).val() !== text) {
$(event.currentTarget).val(text);
}
 
if (text === this.searchText) {
return;
}
this.searchText = text;
 
this.options.pageNumber = 1;
this.initSearch();
this.updatePagination();
this.trigger(&#39;search&#39;, text);
};
 
BootstrapTable.prototype.initSearch = function () {
var that = this;
 
if (this.options.sidePagination !== &#39;server&#39;) {
var s = this.searchText && this.searchText.toLowerCase();
var f = $.isEmptyObject(this.filterColumns) ? null : this.filterColumns;
 
// Check filter
this.data = f ? $.grep(this.options.data, function (item, i) {
for (var key in f) {
 if (item[key] !== f[key]) {
 return false;
 }
}
return true;
}) : this.options.data;
 
this.data = s ? $.grep(this.data, function (item, i) {
for (var key in item) {
 key = $.isNumeric(key) ? parseInt(key, 10) : key;
 var value = item[key],
 column = that.columns[getFieldIndex(that.columns, key)],
 j = $.inArray(key, that.header.fields);
 
 // Fix #142: search use formated data
 if (column && column.searchFormatter) {
 value = calculateObjectValue(column,
 that.header.formatters[j], [value, item, i], value);
 }
 
 var index = $.inArray(key, that.header.fields);
 if (index !== -1 && that.header.searchables[index] && (typeof value === &#39;string&#39; || typeof value === &#39;number&#39;)) {
 if (that.options.strictSearch) {
 if ((value + &#39;&#39;).toLowerCase() === s) {
 return true;
 }
 } else {
 if ((value + &#39;&#39;).toLowerCase().indexOf(s) !== -1) {
 return true;
 }
 }
 }
}
return false;
}) : this.data;
}
};
Nach dem Login kopieren

在initSearch方法里面,它有一个判断:if (this.options.sidePagination !== 'server') {......}也就是说,如果不是服务端分页,才进入检索,重写加载表格,否则压根就不会进入检索,这也就是为什么服务分页的时候,搜索会不起作用。博主试了下,换成客户端分页,确实可以搜索。呵呵,原来如此。其实这也很好里面,过滤本页的数据,意义不大。
5、关于Bootstrap Table的排序,由于一般这种BS系统肯定会采用服务端分页,我们如果仅仅在js里面设置sortable和sortOrder等属性信息,表格是不会有效排序的。原因很简单,服务端分页的方式,排序本页数据意义不大。所以,一般的排序需要将排序方式和排序字段发送到后台,在后台排序比较合适。比如我们这里可以再参数里面增加两个:

oTableInit.queryParams = function (params) {
 var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
 limit: params.limit, //页面大小
 offset: params.offset, //页码
 order: params.order,
 ordername: params.sort,
 departmentname: $("#txt_search_departmentname").val(),
 statu: $("#txt_search_statu").val()
 };
 return temp;
 };
Nach dem Login kopieren

五、总结
在开发经历中,也使用Jqgrid、EasyUI等表格组件。相比而言,bootstrap Table有自己的优势:

1、界面采用扁平化的风格,用户体验比较好,更好兼容各种客户端。这点也是最重要的。

2、开源、免费。国人最喜欢的就是免费了。呵呵。

3、相对Jqgrid、easyUI而言,比较轻量级。功能不能说最全面,但基本够用。

更多JS表格组件神器bootstrap table详解(基础版)相关文章请关注PHP中文网!


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Wie erstelle ich meine eigenen JavaScript -Bibliotheken? Mar 18, 2025 pm 03:12 PM

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

Wie optimiere ich den JavaScript -Code für die Leistung im Browser? Wie optimiere ich den JavaScript -Code für die Leistung im Browser? Mar 18, 2025 pm 03:14 PM

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Was soll ich tun, wenn ich auf den Codendruck auf Kleidungsstücke für Front-End-Thermalpapier-Quittungen stoße? Apr 04, 2025 pm 02:42 PM

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

Wie debugge ich den JavaScript -Code effektiv mithilfe von Browser -Entwickler -Tools? Wie debugge ich den JavaScript -Code effektiv mithilfe von Browser -Entwickler -Tools? Mar 18, 2025 pm 03:16 PM

In dem Artikel werden effektives JavaScript -Debuggen mithilfe von Browser -Entwickler -Tools, der Schwerpunkt auf dem Festlegen von Haltepunkten, der Konsole und der Analyse der Leistung erörtert.

Wie benutze ich Javas Sammlungsrahmen effektiv? Wie benutze ich Javas Sammlungsrahmen effektiv? Mar 13, 2025 pm 12:28 PM

In diesem Artikel wird der effektive Gebrauch des Sammlungsrahmens von Java untersucht. Es betont die Auswahl geeigneter Sammlungen (Liste, Set, Karte, Warteschlange) basierend auf Datenstruktur, Leistungsanforderungen und Thread -Sicherheit. Optimierung der Sammlungsnutzung durch effizientes Gebrauch

Wie verwende ich Quellkarten zum Debuggen, um den JavaScript -Code zu debuggen? Wie verwende ich Quellkarten zum Debuggen, um den JavaScript -Code zu debuggen? Mar 18, 2025 pm 03:17 PM

In dem Artikel wird erläutert, wie Quellkarten zum Debuggen von JavaScript verwendet werden, indem er auf den ursprünglichen Code zurückgegeben wird. Es wird erläutert, dass Quellenkarten aktiviert, Breakpoints eingestellt und Tools wie Chrome Devtools und WebPack verwendet werden.

Erste Schritte mit Chart.js: Kuchen-, Donut- und Bubble -Diagramme Erste Schritte mit Chart.js: Kuchen-, Donut- und Bubble -Diagramme Mar 15, 2025 am 09:19 AM

In diesem Tutorial wird erläutert, wie man mit Diagramm.js Kuchen-, Ring- und Bubble -Diagramme erstellt. Zuvor haben wir vier Chart -Arten von Charts gelernt. Erstellen Sie Kuchen- und Ringdiagramme Kreisdiagramme und Ringdiagramme sind ideal, um die Proportionen eines Ganzen anzuzeigen, das in verschiedene Teile unterteilt ist. Zum Beispiel kann ein Kreisdiagramm verwendet werden, um den Prozentsatz der männlichen Löwen, weiblichen Löwen und jungen Löwen in einer Safari oder den Prozentsatz der Stimmen zu zeigen, die verschiedene Kandidaten bei der Wahl erhalten. Kreisdiagramme eignen sich nur zum Vergleich einzelner Parameter oder Datensätze. Es ist zu beachten, dass das Kreisdiagramm keine Entitäten ohne Wert zeichnen kann, da der Winkel des Lüfters im Kreisdiagramm von der numerischen Größe des Datenpunkts abhängt. Dies bedeutet jede Entität ohne Anteil

Wer bekommt mehr Python oder JavaScript bezahlt? Wer bekommt mehr Python oder JavaScript bezahlt? Apr 04, 2025 am 12:09 AM

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

See all articles