[ASP.NET] 於ASP.NET使用 jQuery EasyUi DataGrid 存取資料

本文主要是介绍[ASP.NET] 於ASP.NET使用 jQuery EasyUi DataGrid 存取資料,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因。

如有冒犯请联系本人,或删除,或标明出处。

因为好的文章,以前只想收藏,但连接有时候会失效,所以现在碰到好的直接转到自己这里。

原文 出处http://www.dotblogs.com.tw/joysdw12/archive/2012/03/21/70917.aspx



 最近逛了逛 jQuery 資料又發現了一個新的 UI 可以使用,就是 jQuery EasyUI,沒注意到是甚麼時候出現的,之前印象只有jquery ui跟jquery tools,看了一下他的文件內容跟Demo資料,其實也提供蠻多好用的plugin,其中覺得他的datagrid感覺還不錯,順手寫了一個範例記錄一下。

jQuery EasyUi 網址: http://www.jeasyui.com

jQuery EasyUi 中文文件: http://www.phptogether.com/juidoc/

 

範例


Step 1

  首先要去 jQuery EasyUi 網站下載檔案,最新版本為 jQuery EasyUI 1.2.5 

 

Step 2

  建立新網站,加入jquery及easyui套件

 

Step 3

  建立一頁新aspx網頁及ashx泛型處理常式用來處理ajax需求,將js檔案載入aspx頁面,依序是css, jquery.js, easyui.js

  • jquery.easyui.min.js為包含所有plugin,當然也可以單獨載入要使用的plugin檔案,
  • 如果需要使用繁體語系,可以在所有.js檔最後面載入 locale 資料夾內的 easyui-lang-zh_TW.js 檔案。
  • 因官網下載的datagrid有如果在page中將datagrid放在form標籤中,選擇跳頁會post的問題,所以這邊需要重新載入原作者提供給我的修正檔pagination plugin。

 

Step 4

  依照官網範例其實就可以很簡單的建立起基本雛型,這邊也一樣實際做一下,針對DataGrid easyui是使用<table>標籤,所以在body內加入一個table並且設定一下表頭欄位,表頭欄位也可以在 script 內的 columns properties設定 ,dgl 的 div 是為了使用 Dialog 來做新增資料的介面。

 

Step 5 

  接下來就開始撰寫 Java Script 碼,基本用法如下:

1 $('#grid').datagrid({  
2     url:'CRUDHandler.ashx',  //處理資料面程式  
3     columns:[[   //設定欄位
4         {field:'id',title:'ID',width:100},  
5         {field:'name',title:'Name',width:100},  
6         {field:'age',title:'Age',width:100,align:'right'},
7         {field:'address',title:'Address',width:100}
8     ]]  
9 });

  這使用尚有很多種屬性可以設定,這些屬性在官方文檔內都可以找的到,在這邊我輸入的Script如下:

01 $(function () {
02     var qParams = { id: $("#txtid").val(), name: $("#txtname").val() }; //取得查詢參數
03     var oldRowIndex;
04     var opt = $('#grid');
05     opt.datagrid({
06         width: "auto"//自動寬度
07         height: 320,  //固定高度
08         nowrap: false//不截斷內文
09         striped: true,  //列背景切換
10         fitColumns: true,  //自動適應欄寬
11         singleSelect: true,  //單選列
12         queryParams: qParams,  //參數
13         url: 'CRUDHandler.ashx',  //資料處理頁
14         idField: 'id',  //主索引
15         frozenColumns: [[{ field: 'ck', checkbox: true}]], //顯示核取方塊
16         pageList: [10, 15, 20], //每頁顯示筆數清單
17         pagination: true//是否啟用分頁
18         rownumbers: true//是否顯示列數
19         toolbar: [{
20             id: 'btnAdd',
21             text: '新增',
22             iconCls: 'icon-add',
23             handler: function () {
24                 insertRow($(this));
25             }
26         }],
27         onClickRow: function (rowIndex) {
28             if (oldRowIndex == rowIndex) {
29                 opt.datagrid('clearSelections', oldRowIndex);
30             }
31             var selectRow = opt.datagrid('getSelected');
32             oldRowIndex = opt.datagrid('getRowIndex', selectRow);
33         }
34     }).datagrid("getPager").pagination({
35         buttons: [{
36             id: 'btnEdit',
37             iconCls: 'icon-edit',
38             text: '編輯',
39             handler: function () {
40                 editRow();
41             }
42         }, '-', {
43             id: 'btnDel',
44             text: '刪除',
45             iconCls: 'icon-remove',
46             handler: function () {
47                 removeRow();
48             }
49         }],
50         onBeforeRefresh: function () {
51             return true;
52         }
53     });
54     $("#btnQry").click(function(){
55             Query();
56     });
57 });

 

  以上這段為主體的Script,這個DataGrid可以處理 查詢、新增、更新、刪除,傳輸資料的格式主要為JSON,接下來必須將對應的方法都補上,開啟新增畫面方法:

1 //開啟新增並位移
2 function insertRow(opt) {
3     var offset = opt.offset();
4     $('#dlg').dialog('open').dialog('setTitle''新增資料').dialog('move', {
5         left: offset.left,
6         top: offset.top
7     });
8 }

 

  儲存資料方法:

01 //儲存資料
02 function saveData() {
03     if ($(".easyui-validatebox").val() != "") {
04         $.post('CRUDHandler.ashx''mode=INS&' + $('#frmAjax input').serialize(), function (result) {
05             if (result.success) {
06                 $('#dlg').dialog('close');
07                 $.messager.alert('Success''新增成功!''info'function () {
08                     $('#grid').datagrid('reload'); // reload
09                 });
10             else {
11                 $.messager.alert('Error', result.msg, 'warning');   //錯誤訊息
12             }
13         }, 'json');
14     }
15     else
16         $.messager.alert('警告''未輸入ID!''warning');   //錯誤訊息
17 }

 

  編輯資料列方法(這邊使用直接跳頁至Detail頁面處理:

1 //編輯資料列
2 function editRow() {
3     var row = $("#grid").datagrid('getSelected');
4     if (row != null)
5         window.location.href = "Detail.aspx?mode=UPD&pk=" + row.id;
6     else
7         $.messager.alert('訊息''尚未選擇需編輯的資料列!''info');   //
8 }

 

  刪除資料列方法:

01 //刪除資料列
02 function removeRow() {
03     var row = $("#grid").datagrid('getSelected');
04     if (row) {
05         $.messager.confirm('Confirm''確定要刪除此筆資料?'function (r) {
06             if (r) {
07                 var index = $("#grid").datagrid('getRowIndex', row);
08                 //$('#grid').datagrid('deleteRow', index); //取得index
09                 $.post('CRUDHandler.ashx', { 'mode''DEL', id: row.id }, function (result) {
10                     if (result.success) {
11                         $.messager.alert('Success''刪除成功!''info'function () {
12                             $('#grid').datagrid('reload');  //刷新畫面
13                         });
14                     else {
15                         $.messager.alert('Error', result.msg, 'warning');   //錯誤訊息
16                     }
17                 }, 'json');
18             }
19         });
20  
21     }
22     else
23         $.messager.alert('訊息''尚未選擇需刪除的資料列!''info');   //
24 }

 

  查詢方法:

01 function Query() {
02     var qid, qname;
03     if ($("#txtid").val() != "")
04         qid = $("#txtid").val();
05     else
06         qid = "";
07     if ($("#txtname").val() != "")
08         qname = $("#txtname").val();
09     else
10         qname = "";
11  
12     qParams = { id: qid, name: qname };
13     $('#grid').datagrid('options').queryParams = qParams;
14     $('#grid').datagrid('options').pageNumber = 1;
15     var p = $('#grid').datagrid('getPager');
16     if (p) {
17         $(p).pagination({ pageNumber: 1 });
18     }
19     $("#grid").datagrid('reload');
20     return false;
21 }   

 

  以上aspx頁面的Script就差不多完成了,接下來就要處理資料面的問題,我使用了 CRUDHandler.ashx 這隻泛型處理常式來處理Server端的動作,在ashx開始我會先判斷要處理哪種作業,並且執行哪個method。

01 public void ProcessRequest (HttpContext context) {
02     if (context.Request["mode"] != null)
03     {
04         string mode =  context.Request["mode"].ToString();
05         switch(mode)
06         {
07             case "Qry":
08                 QueryData(context);
09                 break;
10             case "INS":
11                 InsertData(context);
12                 break;
13             case "DEL":
14                 DeleteData(context);
15                 break;
16         }
17     }
18 }

 

  在查詢的部分我使用SQL資料分頁的方式取得資料並回傳Client端,DataGrid 預設會POST兩個參數回Server端。

  • page: 目前頁數
  • rows: 顯示的筆數

 

  在Server端必須接收這兩個參數後再去資料庫取得分頁資料,如果需要增加額外的參數就如同我上面的Script碼寫法增加,一個查詢的程式碼大概如下:

01 //查詢資料
02 public void QueryData(HttpContext context)
03 {
04     //資料庫分頁取得資料方法
05     string page = context.Request["page"];
06     string rows = context.Request["rows"];
07     List<users> li = new List<users>();
08     DataSet ds = GetData(int.Parse(rows), int.Parse(page), context);
09     foreach (DataRow dr in ds.Tables[0].Rows)
10     {
11         li.Add(new users()
12         {
13             id = dr["id"].ToString(),
14             name = dr["name"].ToString(),
15             age = dr["age"].ToString(),
16             address = dr["address"].ToString()
17         });
18     }
19     ReturnDate rd = new ReturnDate();
20     rd.total = ds.Tables[1].Rows[0]["TotalCount"].ToString();
21     rd.rows = li;
22     DataContractJsonSerializer json = new DataContractJsonSerializer(rd.GetType());
23     json.WriteObject(context.Response.OutputStream, rd);
24 }
25  
26 public class ReturnDate
27 {
28     public string total { getset; }
29     public List<users> rows { getset; }
30 }
31  
32 public class users
33 {
34     public string id { getset; }
35     public string name { getset; }
36     public string age { getset; }
37     public string address { getset; }
38 }</users></users></users>

  這是我的寫法,將撈出來的資料轉成JSON後在傳到Client,而其他的處理方法就可以依照你自己需求而去撰寫,我這邊就不多撰寫了,這樣就完成了一個DataGrid,實際完成的畫面如下。

 

 

範例程式碼



这篇关于[ASP.NET] 於ASP.NET使用 jQuery EasyUi DataGrid 存取資料的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/316527

相关文章

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位