MongoDB结合Flexgrid的简单数据呈现

MongoDB结合Flexgrid简单数据呈现 本示例以常用的:用户,帖子,评论为基础模型,实现了一个简单的MongoDB结合Flexgrid数据呈现的Demo。由于时间所限,功能上仅提供对MongoDB数据的常用查询操作(分页,排序,查询等)。高手请对我这种菜鸟多些包容。 一,

MongoDB结合Flexgrid的简单数据呈现

 

本示例以常用的:用户,帖子,评论为基础模型,实现了一个简单的MongoDB结合Flexgrid数据呈现的Demo。由于时间所限,功能上仅提供对MongoDB数据的常用查询操作(分页,排序,查询等)。高手请对我这种菜鸟多些包容。

 

一,准备工作:

MongoDB官方下载:

当前最新版本是2.2.0版本。话说,MongoDB的版本更新是相当的快。

 

本示例使用的MongoDB C#版驱动下载:
https://github.com/samus/mongodb-csharp
该驱动附源码和示例程序,有兴趣的朋友可以研究一下,对自己的编码能力会有很大的提高。用VS打开Source文件夹,编译后得到程序集,在自己的项目中引用即可。

 

这是官方邮件提供的 C#版驱动:
https://github.com/mongodb/mongo-csharp-driver/downloads
版本很多,而且基本上都是十多兆的东西,然后,没有然后。

 

如果你不习惯以命令行的方式对MongoDB进行操作和管理。推荐以下客户端管理工具:
1,MongoVUE。这应该是目前应用最广的了。
下载地址:

2,虚拟主机,博客园高手自己开发的MongoDB管理工具:

试用了一下,也是相当不错的!

 

虽然上述管理工具能够以图形化的方式与MongoDB交互,但强烈建议你运行mongo.exe客户端,以命令行的方式对MongoDB进行操作和管理,这会让你对MongoDB有更加直观而深刻的体会。另外,Windows8依然内置了DOS。

 

这里有MongoDB的常用命令:

简单AI 简单AI

搜狐推出的AI图片生成社区

简单AI 307 查看详情 简单AI

 

这是Flexgrid的官方网站:

页面顶部有一个硕大的红色Download按钮。

 

TestDriven.net,必不可少的开发和测试工具。本示例需要用它向MongoDB中初始化测试数据。下载地址:

 

二,项目结构:

麻雀虽小,五脏俱全。整个项目结构是一个最原始的三层。直接上图:

MongoDB结合Flexgrid的简单数据呈现

三,技术细节:

1,MongoDB数据库操作。
ADO.NET虽然很强大,但我们通常需要自己动手写一个SqlHelper。MongoDB也一样,我们仍有必要在驱动的基础上对常用的数据操作进行封装。下面贴出本鸟写的MongoDB数据库操作类。大多数方法都与数据查询相关。贴出主要代码:

using System;using System.Collections.Generic;using System.Linq;using System.Configuration;using MongoDB;using MongoDB.Linq;using Mcmurphy.Commons.Enumerations;namespace Mcmurphy.DAL{public class MongoDBHelper{#region 基本信息private static readonly string ConnectionString;private static readonly string DatabaseName;///

/// 当前Mongo引用///

private static Mongo mongo;///

/// 初始化数据库配置///

static MongoDBHelper(){ConnectionString = ConfigurationManager.AppSettings[“connString”];DatabaseName = ConfigurationManager.AppSettings[“currentDB”];}///

/// 当前Mongo对象///

private static Mongo CurrentMongo{get{return new Mongo(ConnectionString);}}///

/// 当前操作集合///

private static IMongoCollection GetCollection() where T:class{try{mongo = CurrentMongo;mongo.Connect();IMongoDatabase db = GetCurrentDataBase();IMongoCollection collection = db.GetCollection();return collection;}catch (Exception ex){throw ex;}}///

/// 获取当前Mongo数据库对象///

/// 当前Mongo数据库对象private static IMongoDatabase GetCurrentDataBase(){return mongo.GetDatabase(DatabaseName);}#endregion#region 数据查询///

/// 获取排序规则///

private static IndexOrder GetIndexOrder(DataOrder order){IndexOrder @orderby = order == DataOrder.Ascending ?IndexOrder.Ascending : IndexOrder.Descending;return orderby;}///

/// 根据条件进行查询,并进行分页///

/// 类型参数/// 条件Lamda表达式/// 当前页索引/// 分页大小/// 结果集public static IEnumerable GetBySearch(System.Linq.Expressions.Expression> selector, int pageIndex, int pageSize) where T : class{try{var currentCollection = GetCollection();return currentCollection.Find(selector).Skip((pageIndex – 1) * pageSize).Limit(pageSize).Documents.ToList();}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}///

/// 根据条件进行查询,并进行分页和排序///

/// 类型参数/// 条件Lamda表达式/// 当前页索引/// 分页大小/// 排序规则/// 排序字段/// 结果集public static IEnumerable GetBySearch(System.Linq.Expressions.Expression> selector, int pageIndex, int pageSize, DataOrder order, string orderField) where T : class{try{IndexOrder orderby = GetIndexOrder(order);var currentCollection = GetCollection();return currentCollection.Find(selector).Sort(orderField, orderby).Skip((pageIndex – 1) * pageSize).Limit(pageSize).Documents.ToList();}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}///

/// 根据条件查询一个对象///

/// 类型参数/// 查询条件Lamda表达式/// 查询对象public static T GetOneBySearch(System.Linq.Expressions.Expression> selector) where T : class{try{var currentCollection = GetCollection();return currentCollection.FindOne(selector);}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}///

/// 根据查询条件获取总记录数///

/// 类型参数/// 查询条件/// 记录数public static long GetTotalCount(System.Linq.Expressions.Expression> selector) where T : class{try{var currentCollection = GetCollection();return currentCollection.Count(selector);}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}///

/// 获取总记录数///

/// 类型参数/// 记录数public static long GetTotalCount() where T : class{try{var currentCollection = GetCollection();return currentCollection.Count();}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}#endregion#region 数据插入///

/// 数据插入///

/// 类型参数/// 要插入的数据对象public static void Insert(T t) where T : class{try{var currentCollection = GetCollection();currentCollection.Insert(t);}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}#endregion#region 数据更新///

/// 根据查询条件更新数据///

/// 类型参数/// 待更新的对象/// 更新的条件Lamda表达式public static void Update(T t, System.Linq.Expressions.Expression> selector) where T : class{try{var currentCollection = GetCollection();currentCollection.Update(t,selector);}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}///

/// 更新/插入数据(id是否存在)///

/// 类型参数/// 待更新的对象public static void Update(T t) where T : class{try{var currentCollection = GetCollection();//inserts of updates depends on whether id existscurrentCollection.Save(t);}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}#endregion#region 数据删除///

/// 数据删除///

/// 类型参数/// 查询的条件Lamda表达式public static void Delete(System.Linq.Expressions.Expression> selector) where T : class{try{var currentCollection = GetCollection();currentCollection.Remove(selector);}catch (Exception ex){throw ex;}finally{mongo.Disconnect();mongo.Dispose();}}#endregion}}

初次调用的时候,会读取在站点项目下Web.Config文件中配置的数据库服务器地址以及数据库名称。

 

2,Flexgrid加载的数据格式。
在官网上徘徊了很久也没有找到Flexgrid要求的数据格式说明。还好有Firebug,但遗憾的是官方示例采用的是XML格式。如下:

  1  234          …    …

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/471632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
VSCode如何搭建React开发环境 VSCode高效开发React项目的配置指南
上一篇 2025年11月8日 07:44:49
网络安全行业可以从“马斯克算法”中汲取灵感
下一篇 2025年11月8日 07:44:56

相关推荐

  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • Python中怎样使用pymongo?

    在python中使用pymongo可以轻松地与mongodb数据库进行交互。1)安装pymongo:pip install pymongo。2)连接到mongodb:from pymongo import mongoclient; client = mongoclient(‘mongod…

    2026年5月10日
    000
  • .NET中的仓储模式(Repository Pattern)是什么?如何解耦业务逻辑和数据访问?

    仓储模式是.NET中用于分离业务逻辑与数据访问的抽象层,通过定义如IUserRepository接口并结合依赖注入,实现对数据访问的具体技术解耦;业务逻辑仅依赖接口,可通过SqlUserRepository等具体实现操作数据库,而无需知晓底层细节;该模式提升可维护性、支持单元测试、降低耦合,并可配合…

    2026年5月10日
    000
  • 解决Python 3.11环境下Motor库异步协程导入错误的指南

    本文旨在解决在Python 3.11环境中使用Motor库时遇到的`ImportError: cannot import name ‘coroutine’ from ‘asyncio’`错误。该问题通常源于Motor库版本过旧,未能适配Python 3…

    2026年5月10日
    000
  • Discord机器人“禁闭”指令的实现与优化

    本教程详细探讨了Discord机器人中“禁闭”指令(Jail Command)的实现方法与常见问题解决方案。内容涵盖了如何创建和管理“禁闭”角色、正确配置频道权限覆盖以限制用户访问、以及在移除用户角色时如何优雅地处理特殊角色(如@everyone)以避免潜在错误。通过优化代码结构和强化权限检查,旨在…

    2026年5月10日
    000
  • HTML表单如何实现白名单功能?怎样只允许授权用户?

    要实现%ignore_a_1%的白名单功能并确保只有授权用户操作,核心答案是必须依赖后端服务器进行严格的身份认证、会话管理、授权检查和数据验证,前端仅能提供用户体验层面的初步提示而不能保障安全;具体而言,首先通过用户身份认证(如用户名/密码或oauth)确认用户身份,服务器创建会话并返回标识符,后续…

    2026年5月10日
    700
  • 解决 Node.js 连接本地 MongoDB 后程序卡死的问题

    本文旨在帮助开发者解决 Node.js 应用连接本地 MongoDB 数据库时,程序在建立连接后卡死的问题。通过分析可能的原因,并提供相应的解决方案,确保 Node.js 应用能够稳定可靠地与 MongoDB 数据库进行交互。文章将涵盖数据库连接配置、端口冲突、跨平台兼容性等方面,并提供代码示例进行…

    2026年5月10日
    000
  • Node.js Express 服务器启动与常见问题排查

    本教程旨在指导开发者正确初始化和启动 node.js express 服务器,解决服务器无响应或未运行的问题。文章将详细阐述 express 应用的创建、路由定义及端口监听等核心步骤,并针对常见的服务器启动失败、请求体解析错误以及数据持久化等问题提供专业的排查思路和解决方案,确保开发者能顺利构建稳定…

    2026年5月10日
    000
  • MongoDB 动态查询:获取集合中最近N年的数据

    本文详细介绍了如何在 MongoDB 中动态查询集合内最近N年的数据,而非基于当前系统时间。通过利用聚合管道的 $setWindowFields、$sort 和 $limit 等阶段,我们能够智能地识别集合中的最新日期,并以此为基准,灵活地提取指定时间范围内的记录,无需硬编码日期,极大地提升了查询的…

    2026年5月10日
    100
  • Golang结构体标签解析错误怎么办?Golang反射标签使用指南

    Golang结构体标签解析错误怎么办?Golang反射标签使用指南Golang结构体标签解析错误怎么办?Golang反射标签使用指南Golang结构体标签解析错误怎么办?Golang反射标签使用指南Golang结构体标签解析错误怎么办?Golang反射标签使用指南

    golang结构体标签解析错误通常由格式不正确、类型不匹配或反射使用不当引起。首先,确保标签格式正确,键值对用冒号分隔,多个键值对之间用空格分隔;其次,检查字段与标签值的类型是否匹配;再者,使用reflect包正确获取标签值,注意索引范围和字段可导出性;最后,处理可能出现的错误,如标签不存在返回空字…

    2026年5月10日 用户投稿
    000
  • 如何高效地在Go中使用http.ResponseWriter构建JSONP响应

    本教程探讨在go语言中高效构建jsonp响应的方法,重点解决如何使用`http.responsewriter`处理回调函数封装。文章通过对比传统字符串拼接与字节切片转换的不足,详细介绍了利用`fmt.fprintf`直接写入和`fmt.sprintf`预格式化两种优化方案,旨在提升代码的简洁性和执行…

    2026年5月10日
    000
  • Go mgo 教程:高效存储扁平化 Go 嵌套结构体

    本教程旨在解决使用 `mgo` 库将 Go 语言中的嵌套结构体存储到 MongoDB 时,默认行为导致文档结构出现嵌套的问题。我们将深入探讨如何利用 `bson` 包提供的 `inline` 标签,将嵌入式结构体的字段提升到父级文档中,从而实现扁平化的 MongoDB 文档结构,提升数据存储的直观性…

    2026年5月10日
    000
  • 为什么多年的经验让我选择全栈而不是平均栈

    在全栈和平均栈开发方面工作了 6 年多,我可以告诉您,虽然这两种方法都是流行且有效的方法,但它们满足不同的需求,并且有自己的优点和缺点。这两个堆栈都可以帮助您创建 Web 应用程序,但它们的实现方式却截然不同。如果您在两者之间难以选择,我希望我在两者之间的经验能给您一些有用的见解。 在这篇文章中,我…

    2025年12月24日
    000
  • 简单易懂的CSS教程,教你打造独特的网页框架

    简单易懂的CSS教程,教你打造独特的网页框架 CSS(层叠样式表)是一种用于定义网页样式和布局的标记语言。通过 CSS,我们可以改变网页的字体、颜色、大小、间距等外观,并且可以控制网页元素的位置和排列方式。本篇教程将为您介绍基本的CSS语法和常用的样式属性,并提供具体的代码示例,以帮助您快速掌握如何…

    2025年12月24日
    000
  • CSS绘制:如何实现简单的图形效果

    CSS绘制:如何实现简单的图形效果 CSS作为前端开发的重要技术之一,除了样式布局外,还可以利用它绘制简单的图形效果。本文将介绍如何使用CSS来实现一些常见的图形效果,并提供具体的代码示例。 一、实现圆形 要实现一个简单的圆形效果,可以使用CSS3的border-radius属性来设置元素的边框半径…

    2025年12月24日
    000
  • CSS绘制:如何实现简单的3D图形效果

    CSS绘制:如何实现简单的3D图形效果 在现代网页设计中,要给页面增加一些动态和立体感,常常需要用到3D图形效果。虽然在过去,实现3D效果可能需要使用JavaScript或者专业的3D引擎,但是现在CSS已经足够强大,可以实现一些简单的3D图形效果。本文将介绍如何使用CSS来绘制简单的3D图形,并提…

    2025年12月24日
    000
  • 使用HTML表单GET方法创建带查询参数的动态搜索链接

    本教程详细阐述了如何在网页中,通过简单地将HTML表单的提交方法从`POST`更改为`GET`,来自动生成包含用户选择搜索条件的动态URL查询参数。这使得搜索结果页面的链接可分享、可收藏,并简化了%ignore_a_1%生成复杂URL的逻辑,后端可直接从URL中解析查询参数进行数据检索。 引言:动态…

    2025年12月23日
    000
  • Web表单提交:如何利用GET方法构建动态查询链接

    本文将指导您如何利用html表单的get方法,根据用户输入的搜索条件动态生成带有查询参数的url。当用户在表单中输入数据并提交时,get方法会自动将表单字段及其值附加到url作为查询字符串,从而创建如`/search?param1=value1&param2=value2`的链接。这对于实现…

    2025年12月23日
    000
  • Node.js中多字段多文件上传与MongoDB路径存储:Multer实践指南

    本教程详细讲解如何在node.js中使用multer处理html表单中的多字段文件上传,并将文件保存到服务器指定目录。核心内容包括multer配置,express路由集成,以及如何在控制器中正确获取上传文件信息并将其存储路径而非文件本身的数据存入mongodb,优化数据库性能和可维护性。 在现代We…

    2025年12月23日
    100
  • 动态生成HTML表格:优化JavaScript数据展示与导出

    本文旨在解决JavaScript中动态生成HTML表格时遇到的代码冗余和样式控制难题。通过引入数据驱动的编程思想,我们将数据与视图逻辑分离,首先将表格内容组织为JavaScript对象数组,然后利用一个通用的函数将这些结构化数据渲染为可读性强、易于维护且支持灵活样式的HTML表格字符串。这种方法不仅…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信