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

December 17, 2023
测试
测试
测试
测试
2 分钟阅读

上一次写原创都已经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);

}

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

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多