首页 > 作文

asp.net使用原生控件实现自定义列导出功能的方法

更新时间:2023-04-04 17:33:35 阅读: 评论:0

目录
自定义列实现尝试一尝试二总结

自定义列实现

最近负责开发公司大学英语四内部使用的人事信息化系统时,有一个需求是这样的,需要在页面中可以用户每次导出excel时自定义需要导出哪些列,经过半天的琢磨和倒腾,总算完成了这个需求。写篇blog记录一下小菜鸡的成长历程。哈哈哈。

需求见截图所示:

tbg:数据源使用datatable、且gridview中用于绑定数据的boundfiled列中使用的datafield全部是与checkbox中的id一一对应,这样方便后面循环这些控件时进行操作。

尝试一

数据源使用的是datatable一开始想的是根据checkbox的选中决定删除remove掉datatable中的列,因为每次查询时,datatable中的数据会重新被填充,但在实施过程中发现,如果datatable中的对应列移除掉,但是gridview中的列乜有移除的话,也会报错,想过也去移除对应的gridview中的boundfiled,但是在移除后又去添加与checkbox的id相对应的列,如此操作非常容易出错,而且整个for循环写的非常恶心,一层套一层。而且在移除对应的datatable列和gridview中的列之后会无法再进行有效的添加(前端不显示),猜测可能是回发问题导致的,没有有效解决遂放弃。

尝试二

使用一个字典dictionary存储checkbox的id和对应的选中状态,然后去遍历gridview中的每一列,为每一列设置对应的隐藏和显示状态。这个方案尝试成功了哈,哈哈哈,虽然很简单,但开心了好一阵子。下面放代码;
            datatable dt = employeesrvices.getemployeesdatatable();            dictionary<string, bool> ckbinfolist = new dictionary<string, bool>();            foreach (var control in page.controls)            {                if (control.gettype().tostring() == "system.web.ui.htmlcontrols.htmlform")                {                    htmlform form = (htmlform)control;                    foreach (var item in form.controls)                    {                        if (item is checkbox)                        {                            checkbox ckb = (checkbox)item;                            if (!ckb.checked)                            {                                ckbinfolist.add(ckb.id, fal);                            }                            el                            {                                ckbinfolist.add(ckb.id,true);                            }   浙江招生考试                     }                    }                }            }            //遍历gridview列,根据dictionary提供的内容来决定是否隐藏。            foreach (var control in page.controls)            {                if (control.gettype().tostring() == "system.web.ui.htmlcontrols.htmjunior什么意思lform")                {                    htmlform form = (htmlform)control;                    foreach (var item in form.controls)          世外桃源的意思          {                        if (item.gettype().tostring() == "system.web.ui.webcontrols.gridview")                        {                            gridview gridview = (gridview)item;                            foreach (boundfield col in gridview.columns)                            {                                foreach (var keyvalue in ckbinfolist)                                {                                    if (keyvalue.key == col.datafield)                                    {                                        col.visible = convert.toboolean(keyvalue.value);                                    }                                }                            }                        }                    }                }            }            gv.datasourc放假通知模板范文e = dt;            gv.databind();

总结

到此这篇关于asp.net使用原生控件实现自定义列导出功能的文章就介绍到这了,更多相关asp.net原生控件自定义列导出内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 17:33:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/cdcbba8771920e65551d86a6fb1f2921.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:asp.net使用原生控件实现自定义列导出功能的方法.doc

本文 PDF 下载地址:asp.net使用原生控件实现自定义列导出功能的方法.pdf

下一篇:返回列表
标签:自定义   移除   的是   控件
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图