国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MongoDB學習筆記(三) 在MVC模式下通過Jqgrid表格操作MongoDB數據

數據庫 其他數據庫 MongoDB
在上一篇MongoDB學習筆記 中筆者帶領我們學習了如何通過samus驅動實現基本數據操作,本篇中筆者帶領我們學習在MVC模式下通過Jqgrid表格操作MongoDB數據。

在上一篇MongoDB學習筆記 中筆者帶領我們學習了如何通過samus驅動實現基本數據操作,本篇中筆者帶領我們學習在MVC模式下通過Jqgrid表格操作MongoDB數據。

看到下圖,是通過Jqgrid實現表格數據的基本增刪查改的操作。表格數據增刪改是一般企業應用系統開發的常見功能,不過不同的是這個表格數據來源是非關系型的數據庫MongoDB。nosql雖然概念新穎,但是MongoDB基本應用實現起來還是比較輕松的,甚至代碼比基本的ADO.net訪問關系數據源還要簡潔。由于其本身的“非關系”的數據存儲方式,使得對象關系映射這個環節對于MongoDB來講顯得毫無意義,因此我們也不會對MongoDB引入所謂的“ORM”框架。

下面我們將逐步講解怎么在MVC模式下將MongoDB數據讀取,并展示在前臺Jqgrid表格上。這個“簡易系統”的基本設計思想是這樣的:我們在視圖層展示表格,Jqgrid相關Js邏輯全部放在一個Js文件中,控制層實現了“增刪查改”四個業務,MongoDB的基本數據訪問放在了模型層實現。下面我們一步步實現。

一、實現視圖層Jqgrid表格邏輯

  首先,我們新建一個MVC空白項目,添加好jQuery、jQueryUI、Jqgrid的前端框架代碼:

  然后在Views的Home文件夾下新建視圖“Index.aspx”,在視圖的body標簽中添加如下HTML代碼:

  1. <div>    
  2.  
  3.     <table id="table1">    
  4.  
  5.     </table>    
  6.  
  7.     <div id="div1">    
  8.  
  9.     </div>    
  10.  
  11. </div>   

接著新建Scripts\Home文件夾,在該目錄新建“Index.js”文件,并再視圖中引用,代碼如下:

  1. jQuery(document).ready(function () {    
  2.     //jqGrid初始化    
  3.     jQuery("#table1").jqGrid({    
  4.         url: '/Home/UserList',    
  5.         datatype: 'json',    
  6.         mtype: 'POST',    
  7.         colNames: ['登錄名''姓名''年齡''手機號''郵箱地址''操作'],    
  8.         colModel: [    
  9.              { name'UserId'index'UserId', width: 180, editable: true },    
  10.              { name'UserName'index'UserName', width: 200, editable: true },    
  11.              { name'Age'index'Age', width: 150, editable: true },    
  12.              { name'Tel'index'Tel', width: 150, editable: true },    
  13.              { name'Email'index'Email', width: 150, editable: true },    
  14.              { name'Edit'index'Edit', width: 150, editable: false, align: 'center' }    
  15.              ],    
  16.         pager: '#div1',    
  17.         postData: {},    
  18.         rowNum: 5,    
  19.         rowList: [5, 10, 20],    
  20.         sortable: true,    
  21.         caption: '用戶信息管理',    
  22.         hidegrid: false,    
  23.         rownumbers: true,    
  24.         viewrecords: true   
  25.     }).navGrid('#div1', { edit: falseaddfalse, del: false })    
  26.             .navButtonAdd('#div1', {    
  27.                 caption: "編輯",    
  28.                 buttonicon: "ui-icon-add",    
  29.                 onClickButton: function () {    
  30.                     var id = $("#table1").getGridParam("selrow");    
  31.                     if (id == null) {    
  32.                         alert("請選擇行!");    
  33.                         return;    
  34.                     }    
  35.                     if (id == "newId"return;    
  36.                     $("#table1").editRow(id);    
  37.                     $("#table1").find("#" + id + "_UserId").attr("readonly","readOnly");    
  38.                     $("#table1").setCell(id, "Edit""<input id='Button1' type='button' value='提交' onclick='Update(\"" + id + "\")' /><input id='Button2' type='button' value='取消' onclick='Cancel(\"" + id + "\")' />");    
  39.                 }    
  40.             }).navButtonAdd('#div1', {    
  41.                 caption: "刪除",    
  42.                 buttonicon: "ui-icon-del",    
  43.                 onClickButton: function () {    
  44.                     var id = $("#table1").getGridParam("selrow");    
  45.                     if (id == null) {    
  46.                         alert("請選擇行!");    
  47.                         return;    
  48.                     }    
  49.                     Delete(id);    
  50.                 }    
  51.             }).navButtonAdd('#div1', {    
  52.                 caption: "新增",    
  53.                 buttonicon: "ui-icon-add",    
  54.                 onClickButton: function () {    
  55.                     $("#table1").addRowData("newId", -1);    
  56.                     $("#table1").editRow("newId");    
  57.                     $("#table1").setCell("newId""Edit""<input id='Button1' type='button' value='提交' onclick='Add()' /><input id='Button2' type='button' value='取消' onclick='Cancel(\"newId\")' />");    
  58.                 }    
  59.             });    
  60. });    
  61. //取消編輯狀態    
  62. function Cancel(id) {    
  63.     if (id == "newId") $("#table1").delRowData("newId");    
  64.     else $("#table1").restoreRow(id);    
  65. }    
  66. //向后臺ajax請求新增數據    
  67. function Add() {    
  68.     var UserId = $("#table1").find("#newId" + "_UserId").val();    
  69.     var UserName = $("#table1").find("#newId" + "_UserName").val();    
  70.     var Age = $("#table1").find("#newId" + "_Age").val();    
  71.     var Tel = $("#table1").find("#newId" + "_Tel").val();    
  72.     var Email = $("#table1").find("#newId" + "_Email").val();    
  73.     $.ajax({    
  74.         type: "POST",    
  75.         url: "/Home/Add",    
  76.         data: "UserId=" + UserId + "&UserName=" + UserName + "&Age=" + Age + "&Tel=" + Tel + "&Email=" + Email,    
  77.         success: function (msg) {    
  78.             alert("新增數據: " + msg);    
  79.             $("#table1").trigger("reloadGrid");    
  80.         }    
  81.     });    
  82. }    
  83. //向后臺ajax請求更新數據    
  84. function Update(id) {    
  85.     var UserId = $("#table1").find("#" + id + "_UserId").val();    
  86.     var UserName = $("#table1").find("#" + id + "_UserName").val();    
  87.     var Age = $("#table1").find("#" + id + "_Age").val();    
  88.     var Tel = $("#table1").find("#" + id + "_Tel").val();    
  89.     var Email = $("#table1").find("#" + id + "_Email").val();    
  90.     $.ajax({    
  91.         type: "POST",    
  92.         url: "/Home/Update",    
  93.         data: "UserId=" + UserId + "&UserName=" + UserName + "&Age=" + Age + "&Tel=" + Tel + "&Email=" + Email,    
  94.         success: function (msg) {    
  95.             alert("修改數據: " + msg);    
  96.             $("#table1").trigger("reloadGrid");    
  97.         }    
  98.     });    
  99. }    
  100. //向后臺ajax請求刪除數據    
  101. function Delete(id) {    
  102.     var UserId = $("#table1").getCell(id, "UserId");    
  103.     $.ajax({    
  104.         type: "POST",    
  105.         url: "/Home/Delete",    
  106.         data: "UserId=" + UserId,    
  107.         success: function (msg) {    
  108.             alert("刪除數據: " + msg);    
  109.             $("#table1").trigger("reloadGrid");    
  110.         }    
  111.     });    
  112. }  

二、實現控制層業務

  在Controllers目錄下新建控制器“HomeController.cs”,Index.js中產生了四個ajax請求,對應控制層也有四個業務方法。HomeController代碼如下:

  1. public class HomeController : Controller    
  2. {    
  3.     UserModel userModel = new UserModel();    
  4.     public ActionResult Index()    
  5.     {    
  6.         return View();    
  7.     }    
  8.     /// <summary>    
  9.     /// 獲取全部用戶列表,通過json將數據提供給jqGrid    
  10.     /// </summary>    
  11.     public JsonResult UserList(string sord, string sidx, string rows, string page)    
  12.     {    
  13.         var list = userModel.FindAll();    
  14.         int i = 0;    
  15.         var query = from u in list    
  16.                     select new   
  17.                     {    
  18.                         id = i++,    
  19.                         cell = new string[]{    
  20.                             u["UserId"].ToString(),    
  21.                             u["UserName"].ToString(),    
  22.                             u["Age"].ToString(),    
  23.                             u["Tel"].ToString(),    
  24.                             u["Email"].ToString(),    
  25.                             "-"   
  26.                         }    
  27.                     };    
  28.         var data = new   
  29.         {    
  30.             total = query.Count() / Convert.ToInt32(rows) + 1,    
  31.             page = Convert.ToInt32(page),    
  32.             records = query.Count(),    
  33.             rows = query.Skip(Convert.ToInt32(rows) * (Convert.ToInt32(page) - 1)).Take(Convert.ToInt32(rows))    
  34.         };    
  35.         return Json(data, JsonRequestBehavior.AllowGet);    
  36.     }    
  37.     /// <summary>    
  38.     /// 響應Js的“Add”ajax請求,執行添加用戶操作    
  39.     /// </summary>    
  40.     public ContentResult Add(string UserId, string UserName, int Age, string Tel, string Email)    
  41.     {    
  42.         Document doc = new Document();    
  43.         doc["UserId"] = UserId;    
  44.         doc["UserName"] = UserName;    
  45.         doc["Age"] = Age;    
  46.         doc["Tel"] = Tel;    
  47.         doc["Email"] = Email;    
  48.         try   
  49.         {    
  50.             userModel.Add(doc);    
  51.             return Content("添加成功");    
  52.  
  53.         }    
  54.         catch   
  55.         {    
  56.             return Content("添加失敗");    
  57.         }    
  58.     }    
  59.     /// <summary>    
  60.     /// 響應Js的“Delete”ajax請求,執行刪除用戶操作    
  61.     /// </summary>    
  62.     public ContentResult Delete(string UserId)    
  63.     {    
  64.         try   
  65.         {    
  66.             userModel.Delete(UserId);    
  67.             return Content("刪除成功");    
  68.         }    
  69.         catch   
  70.         {    
  71.             return Content("刪除失敗");    
  72.         }    
  73.     }    
  74.     
  75.     /// <summary>    
  76.     /// 響應Js的“Update”ajax請求,執行更新用戶操作    
  77.     /// </summary>    
  78.     public ContentResult Update(string UserId, string UserName, int Age, string Tel, string Email)    
  79.     {    
  80.         Document doc = new Document();    
  81.         doc["UserId"] = UserId;    
  82.         doc["UserName"] = UserName;    
  83.         doc["Age"] = Age;    
  84.         doc["Tel"] = Tel;    
  85.         doc["Email"] = Email;    
  86.         try   
  87.         {    
  88.             userModel.Update(doc);    
  89.             return Content("修改成功");    
  90.         }    
  91.         catch   
  92.         {    
  93.             return Content("修改失敗");    
  94.         }    
  95.     }    
  96. }  

三、實現模型層數據訪問

  ***,我們在Models新建一個Home文件夾,添加模型“UserModel.cs”,實現MongoDB數據庫訪問代碼如下:

  1. public class UserModel    
  2.  {    
  3.      //鏈接字符串(此處三個字段值根據需要可為讀配置文件)    
  4.      public string connectionString = "mongodb://localhost";    
  5.      //數據庫名    
  6.      public string databaseName = "myDatabase";    
  7.      //集合名     
  8.      public string collectionName = "userCollection";    
  9.      private Mongo mongo;    
  10.      private MongoDatabase mongoDatabase;    
  11.      private MongoCollection<Document> mongoCollection;    
  12.      public UserModel()    
  13.      {    
  14.          mongo = new Mongo(connectionString);    
  15.          mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase;    
  16.          mongoCollection = mongoDatabase.GetCollection<Document>(collectionName) as MongoCollection<Document>;    
  17.          mongo.Connect();    
  18.      }    
  19.      ~UserModel()    
  20.      {    
  21.          mongo.Disconnect();    
  22.      }    
  23.      /// <summary>    
  24.      /// 增加一條用戶記錄    
  25.      /// </summary>    
  26.      /// <param name="doc"></param>    
  27.      public void Add(Document doc)    
  28.      {    
  29.          mongoCollection.Insert(doc);    
  30.      }    
  31.      /// <summary>    
  32.      /// 刪除一條用戶記錄    
  33.      /// </summary>    
  34.      public void Delete(string UserId)    
  35.      {    
  36.          mongoCollection.Remove(new Document { { "UserId", UserId } });    
  37.      }    
  38.      /// <summary>    
  39.      /// 更新一條用戶記錄    
  40.      /// </summary>    
  41.      /// <param name="doc"></param>    
  42.      public void Update(Document doc)    
  43.      {    
  44.          mongoCollection.FindAndModify(doc, new Document { { "UserId", doc["UserId"].ToString() } });    
  45.      }    
  46.      /// <summary>    
  47.      /// 查找所有用戶記錄    
  48.      /// </summary>    
  49.      /// <returns></returns>    
  50.      public IEnumerable<Document> FindAll()    
  51.      {    
  52.          return mongoCollection.FindAll().Documents;    
  53.      }    
  54.  } 

 
四、小結
  代碼下載:http://files.cnblogs.com/lipan/MongoDB_003.rar

  自此為止一個簡單MongoDB表格數據操作的功能就實現完畢了,相信讀者在看完這篇文章后,差不多都可以輕松實現MongoDB項目的開發應用了。聰明的你一定會比本文做的功能更完善,更好。下篇計劃講解linq的方式訪問數據集合。

原文出處:http://www.cnblogs.com/lipan/archive/2011/03/11/1980227.html

 

【編輯推薦】

  1. MongoDB學習筆記(一) MongoDB介紹及安裝
  2. MongoDB學習筆記(二) 通過samus驅動實現基本數據操作
  3. 拋棄關系數據庫 PHP程序員應了解MongoDB的五件事
  4. MongoDB,無模式文檔型數據庫簡介
  5. Visual Studio 2010下編譯調試MongoDB源碼

 

責任編輯:艾婧 來源: 博客園
相關推薦

2011-03-21 13:28:14

MongoDB文件存取

2011-03-09 09:18:49

MongoDBsamus

2011-09-14 15:30:00

MongoDB

2011-03-08 10:27:25

MongoDB介紹安裝

2011-06-30 13:31:35

MongoDB

2011-03-17 09:06:34

MongoDB文檔結構

2011-03-28 13:29:22

MongoDB索引用法效率分析

2012-07-16 10:19:02

MongoDB

2012-08-17 09:48:55

MongoDB

2023-12-18 16:07:15

2011-01-10 11:09:16

linuxMongoDB安裝

2017-07-07 10:55:14

數據庫MongoDB設計模式

2022-03-10 09:08:43

數據庫Mongodb數據庫轉

2021-08-04 09:00:53

Python數據庫Python基礎

2013-11-28 09:48:55

MongoDBSharding分片

2021-03-04 10:37:37

PythonMongoDB數據庫

2011-06-03 10:06:57

MongoDB

2009-09-04 09:33:50

MongoDB

2013-11-22 10:02:59

Mongodb千萬級數據python

2025-05-14 08:15:00

MongoDB操作命令Docker
點贊
收藏

51CTO技術棧公眾號

欧美一区二区三区成人| 加勒比一区二区三区| 日韩欧美一区二区不卡| 麻豆国产一区二区| 一区二区三区日韩视频| 四虎成人精品一区二区免费网站| 成人h动漫精品| 国产自产在线视频一区| 欧美**字幕| 亚洲午夜女主播在线直播| 日本欧美在线看| 男人av在线| 亚洲一区二区在线看| 在线精品高清中文字幕| 99久久精品免费看| 成人区精品一区二区婷婷| 可以在线观看的av网站| 久久久久久国产精品mv| 国产一区二区三区久久精品| 亚洲卡通欧美制服中文| 91免费精品| 美女搞黄视频在线观看| 亚洲图片欧洲图片日韩av| 亚洲一区二区三区爽爽爽爽爽| 国产成人一二片| 久操网在线观看| 国内精品久久久久影院优| 久久久久成人黄色影片| 亚洲91网站| 亚洲综合色在线观看| 亚洲跨种族黑人xxx| 国模大尺度一区二区三区| 123区在线| 色中文字幕在线观看| 日韩欧美中文字幕在线观看| 免费黄色电影在线观看| 久久精品影视伊人网| ㊣最新国产の精品bt伙计久久| 成人网在线免费视频| 午夜影院在线播放| 成人写真视频福利网| 精品亚洲国产成人av制服丝袜 | 91手机在线观看| 亚洲1区在线| 久久人人爽人人爽人人片av高请 | 中文字幕日韩av| 都市激情亚洲| 99久久自偷自偷国产精品不卡| 国产一区二区美女| 国产视频1区2区3区| 国产aaa精品| 91av精品| 久久久久se| 国产真实乱子伦精品视频| 成人www视频在线观看| 国产精品免费大片| 国产成人精品在线| 狠狠网亚洲精品| 亚洲人成网77777色在线播放| h片在线观看| 成人午夜电影在线观看| 久久精品无码中文字幕| 日本午夜精品一区二区| 成人自拍偷拍| 国产精品678| 午夜精品免费视频| 欧美贵妇videos办公室| 亚洲国语精品自产拍在线观看| 婷婷一区二区三区| 久久久99久久| 黄色成人在线网站| 国产美女情趣调教h一区二区| 成人av在线不卡| 91精品久久久久久| 中文字幕精品av| 精品国产一二三区| 精品国产福利在线| 26uuu久久综合| 激情综合亚洲| 久久wwww| 日本精品在线| 三年中国中文在线观看免费播放 | 欧美日韩亚洲综合一区二区三区激情在线| 色吧亚洲视频| 国产午夜精品久久久| 99亚洲男女激情在线观看| 国产欧洲精品视频| 亚洲男同性恋视频| 成人精品在线| 亚洲国产精品www| 亚洲天堂av在线免费观看| 欧美疯狂做受xxxx富婆| 亚洲最大的成人av| 狠狠躁夜夜躁人人爽超碰91| 欧美综合欧美视频| 一本色道亚洲精品aⅴ| 欧美一区二区三区在线电影| 亚洲电影一区二区三区| 欧美亚男人的天堂| 精品国产乱子伦一区| 亚洲欧美激情在线视频| 久久久久久噜噜噜久久久精品| 国产va免费精品高清在线| 久久婷婷国产麻豆91天堂 | 国产在线观看福利| 亚洲精品中文字幕乱码三区不卡| 亚洲伊人成综合成人网| 国产精品久久久久久久久久久久久久 | 国产精品原创巨作av| 国产成人免费精品| 欧美videossex| 影音先锋亚洲精品| 欧美国产丝袜视频| 欧美美女一区| h片在线播放| 亚洲综合伊人久久大杳蕉| h片在线观看视频免费| 很黄的网站在线观看| 特黄国产免费播放| 日本最新一区二区三区视频观看| 日韩三级视频在线看| 亚洲永久免费| 国产不卡精品| yiren22综合网成人| 日本毛片在线免费观看| 久久久伊人欧美| 色噜噜夜夜夜综合网| 狠狠色丁香久久婷婷综合_中| 精品国产一区二| 激情视频网址| 一区二区三区av在线| 精品va天堂亚洲国产| 国产一区二区三区久久| 精品91福利视频| 午夜不卡视频| 成人影欧美片| 精品一区二区三区免费看| 麻豆传媒视频在线| 黄色软件在线| 鲁一鲁一鲁一鲁一av| 国产一区二区三区高清视频| 久久精品一偷一偷国产| 在线不卡免费欧美| 欧美成人激情免费网| 粉嫩老牛aⅴ一区二区三区 | 国产精品jizz在线观看美国| 性欧美孕妇孕交| 91日韩视频在线观看| 国产精品极品美女粉嫩高清在线| 9191精品国产综合久久久久久| 一区二区欧美视频| 蜜桃a∨噜噜一区二区三区| 少妇网站在线观看| 麻豆一区区三区四区产品精品蜜桃| 国产在线一区二区三区欧美| 成人性做爰片免费视频| 欧美精品在线观看| 8x8x8x视频在线观看| 116极品美女午夜一级| 成人两性免费视频| 成人一级毛片| 美女露胸视频在线观看| 国产精品一区久久| 98精品国产高清在线xxxx天堂| 亚洲欧洲xxxx| 欧美色精品在线视频| 亚洲理论在线观看| 亚洲精品国产无天堂网2021| 欧美在线一区二区三区| 成人aaaa| 亚洲欧美中文日韩在线| 午夜在线播放| 国产免费av一区二区三区| 国产精品乱人伦中文| 午夜免费日韩视频| 男人女人黄一级| 国产精品色婷婷在线观看| 成人午夜av在线| 久久久黄色av| 999大胆视频| 国产精品99一区二区| 日韩欧美国产一区二区在线播放| 日韩福利一区二区三区| 91精品久久久| 亚洲国产午夜| 五月天亚洲精品| 国产欧美一区二区三区四区| 色婷婷狠狠18| 精品中文字幕一区二区三区| 久久精品男人的天堂| 久久不射电影网| 色综合天天色综合| 日韩欧美天堂| 中文字幕第一区| 国语自产精品视频在线看抢先版图片 | 天堂√在线观看一区二区| 日韩成人免费| 欧美超级乱淫片喷水| wwwav91| 欧美色片在线观看|