前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单就是美,论jqgrid 导出的反射美

简单就是美,论jqgrid 导出的反射美

原创
作者头像
谭广健
修改2019-07-01 11:25:44
1.2K0
修改2019-07-01 11:25:44
举报

上一次写原创都已经3个月前,由于最近换了新的环境;认识了新的人、新的朋友。也学到了一些新的技能如安卓控制开发,Iot物联网的流程控制MQTT传输等。。好吧,不费话直接奔主题。。

最近在维护一个.net MVC的旧项目,因为要加入一个导出Excel功能,之前已经有导出Excel功能,但不是太强大,只是用NPOI凑合使用。这次改用之前推荐的EPPlus。因为需求要可视即可导出功能,即用户见到的列表都要能导出,由于列表是用jqgrid 导出,而jqgrid 的title又是手动写入,所以处理比较麻烦,于是看到jqgrid有一个colModel导出功能 【$("#gridList").jqGrid('getGridParam', 'colModel');】。简单说就是能直接将jqgrid 的colModel的Array直接拿出来,这样导出时就不用2次处理title.

通过 JSON.stringify 将colModel的Array传入MVC的控制器中,然后通过JArray jo = (JArray)JsonConvert.DeserializeObject(postdata);对传入的数据进行处理。好了,麻烦就开始了,就是因为传入的有字段名,而字段名是通过字符串显示,因此没法直接提起字符串中的字段名。这样就到了我们今天的主题,反射。。反射是.NET的一个重要功能,,反射其实原理很简单就是通过一个点获得一个面,通过一个成员获得一个组织的资料。

代码就一个句:item_a.GetType().GetProperty(jo[i]["name"].ToString()).GetValue(item_a, null).ToString()

通过GetProperty拿jo[i]["name"].ToString()的字段,然后获得它在item_a的值,当然也可以获得其他的资料,例如它的类型,它对应的关系等。

好了,就这样几个核心就构造出我们jqgrid 的通用导出功能。

using (var fs = new FileStream(destDir+ fileName, FileMode.Create, FileAccess.Write))

{

excel.SaveAs(fs);

}

最后,说明一下这个是我的原创,请勿转载~如真转载,请留个出处吧~

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档