winform下DaagridVIEW列太多时,设置列名太慢

问题描述

我有一个主单列表,有258列,因为针对的客户比较多,所以列相对比较多,但是现在问题来了,首次加载时,这些列我是动态绑定上去的,结果在初始化列名时耗费3秒钟,请问有没有好的解决方案this.gvFmsBookingNote.DataSource=dt;#endregionDateTimedt1=DateTime.Now;#region设置列名this.gvFmsBookingNote.Columns["NoteIsPX"].HeaderText="拼箱";this.gvFmsBookingNote.Columns["NotePXNos"].HeaderText="拼箱委托单号";this.gvFmsBookingNote.Columns["ChargeInvoiceAmount"].HeaderText="应收款需开票总额";this.gvFmsBookingNote.Columns["PayInvoiceAmount"].HeaderText="应付款需开票总额";this.gvFmsBookingNote.Columns["InvoiceBalanceAmount"].HeaderText="应收/付款需开票差额";this.gvFmsBookingNote.Columns["IsChangeShipper"].HeaderText="多个发货人";this.gvFmsBookingNote.Columns["LoadRequest"].HeaderText="装货要求";this.gvFmsBookingNote.Columns["DeliveryRequest"].HeaderText="送货要求";this.gvFmsBookingNote.Columns["SaleManETA"].HeaderText="预报离港";this.gvFmsBookingNote.Columns["SaleManETD"].HeaderText="预报到港";this.gvFmsBookingNote.Columns["days_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["Notewk_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["Noteyy_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["months_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["HYF"].Visible=false;this.gvFmsBookingNote.Columns["HYFChecked"].Visible=false;this.gvFmsBookingNote.Columns["HyfUnChecked"].Visible=false;this.gvFmsBookingNote.Columns["wk"].Visible=false;this.gvFmsBookingNote.Columns["yy"].Visible=false;this.gvFmsBookingNote.Columns["Notewk"].Visible=false;this.gvFmsBookingNote.Columns["Noteyy"].Visible=false;this.gvFmsBookingNote.Columns["months"].Visible=false;this.gvFmsBookingNote.Columns["days"].Visible=false;this.gvFmsBookingNote.Columns["OrganizationCode"].Visible=false;this.gvFmsBookingNote.Columns["IsWX"].HeaderText="外协";this.gvFmsBookingNote.Columns["BlNos"].HeaderText="提/运单号";this.gvFmsBookingNote.Columns["CtnrNos"].HeaderText="箱号";this.gvFmsBookingNote.Columns["IsRoad"].Visible=false;this.gvFmsBookingNote.Columns["Status"].Visible=false;//this.gvFmsBookingNote.Columns["AbolisherName"].Visible=false;//this.gvFmsBookingNote.Columns["AbolishDate"].Visible=false;//this.gvFmsBookingNote.Columns["FbsAbolisherName"].Visible=false;//this.gvFmsBookingNote.Columns["FbsAbolishDate"].Visible=false;this.gvFmsBookingNote.Columns["IsCancel"].HeaderText="作废";this.gvFmsBookingNote.Columns["CancelUserName"].HeaderText="作废人";this.gvFmsBookingNote.Columns["CancelRemark"].HeaderText="作废原因";this.gvFmsBookingNote.Columns["CancelDate"].HeaderText="作废日期";this.gvFmsBookingNote.Columns["IsAudit_Booking"].HeaderText="订舱审核";this.gvFmsBookingNote.Columns["AuditUserName_Booking"].HeaderText="订舱审核人";this.gvFmsBookingNote.Columns["AuditDate_Booking"].HeaderText="订舱审核日期";this.gvFmsBookingNote.Columns["IsChangeConsignee"].HeaderText="多个收货人";this.gvFmsBookingNote.Columns["IsRoad"].HeaderText="公路运输";this.gvFmsBookingNote.Columns["CustomerAddress"].HeaderText="委托客户地址";this.gvFmsBookingNote.Columns["CustomerLinkMan"].HeaderText="委托客户联系人";this.gvFmsBookingNote.Columns["CustomerTel"].HeaderText="委托客户电话";if(SystemProfileCache.GetSystemProfileValue("CustomerCompanyName").Equals("海恒")){if(CanViewConsigneeLinkManTel&&CanViewShipperLinkManTel){this.gvFmsBookingNote.Columns["CustomerLinkMan"].HeaderText="委托客户联系人";this.gvFmsBookingNote.Columns["CustomerTel"].HeaderText="委托客户电话";}else{this.gvFmsBookingNote.Columns["CustomerLinkMan"].Visible=false;this.gvFmsBookingNote.Columns["CustomerTel"].Visible=false;}}this.gvFmsBookingNote.Columns["TaskStatus"].HeaderText="箱状态";this.gvFmsBookingNote.Columns["VesselCompanyName"].HeaderText="船公司";this.gvFmsBookingNote.Columns["Status"].HeaderText="状态";this.gvFmsBookingNote.Columns["IsSign"].HeaderText="客户签收";this.gvFmsBookingNote.Columns["CustomerShortName"].HeaderText="委托单位";this.gvFmsBookingNote.Columns["ShipperShortName"].HeaderText="发货单位";this.gvFmsBookingNote.Columns["ConsigneeShortName"].HeaderText="收货单位";this.gvFmsBookingNote.Columns["ForwarderAgentShortName"].HeaderText="代理人";this.gvFmsBookingNote.Columns["NotifyShortName"].HeaderText="通知人";this.gvFmsBookingNote.Columns["InsurerShortName"].HeaderText="保险公司";this.gvFmsBookingNote.Columns["POLPortCHIName"].HeaderText="装货港";this.gvFmsBookingNote.Columns["PODPortCHIName"].HeaderText="卸货港";this.gvFmsBookingNote.Columns["LoadAddress"].HeaderText="装货地址";this.gvFmsBookingNote.Columns["DeliveryAddress"].HeaderText="卸货地址";this.gvFmsBookingNote.Columns["LoadFeePlaceName"].HeaderText="装货地";this.gvFmsBookingNote.Columns["DeliveryFeePlaceName"].HeaderText="卸货地";this.gvFmsBookingNote.Columns["VesselName"].HeaderText="船名";this.gvFmsBookingNote.Columns["VoyName"].HeaderText="船次";this.gvFmsBookingNote.Columns["BookingNoteID"].Visible=false;this.gvFmsBookingNote.Columns["BillNo"].HeaderText="委托单号";this.gvFmsBookingNote.Columns["CustomerBillNo"].HeaderText="客户单号";this.gvFmsBookingNote.Columns["SalesManName"].HeaderText="业务员";this.gvFmsBookingNote.Columns["CanvassMode"].HeaderText="揽货方式";this.gvFmsBookingNote.Columns["DeliveryType"].HeaderText="运输条款";this.gvFmsBookingNote.Columns["PayMode"].HeaderText="付款方式";this.gvFmsBookingNote.Columns["LoadDate"].HeaderText="装货日期";this.gvFmsBookingNote.Columns["BigCategoryName"].HeaderText="货物分类";this.gvFmsBookingNote.Columns["IsRF"].HeaderText="是否冻柜";this.gvFmsBookingNote.Columns["IsDanger"].HeaderText="是否危险品";this.gvFmsBookingNote.Columns["IsInsure"].HeaderText="代买保险";this.gvFmsBookingNote.Columns["PlanDeliveryTime"].HeaderText="计划送货日期";this.gvFmsBookingNote.Columns["CreateUser"].HeaderText="受单人";this.gvFmsBookingNote.Columns["CreateTime"].HeaderText="受单日期";this.gvFmsBookingNote.Columns["ConfirmUser"].HeaderText="确认人";this.gvFmsBookingNote.Columns["ConfirmTime"].HeaderText="确认日期";this.gvFmsBookingNote.Columns["Remark"].HeaderText="备注";

解决方案

解决方案二:
此处略去类似代码#endregionDateTimedt2=DateTime.Now;TimeSpants=dt2-dt1;doubletotal=ts.TotalSeconds;
解决方案三:
设置列名应花不了多少时间吧,而是你数据原绑定花时间。
解决方案四:
256个列应该不都是有用的吧,只显示常用的,详细信息开新窗口,或者用List-Detail这种现实模式显示。上面list,选中下面Detail里显示详细信息。
解决方案五:
宝爸的方法推荐。200多列一张表挺吓人的,你能考虑重新设计设计吗
解决方案六:
什么需求搞那么多列,看的完么。分表吧如果1000个客户看来要搞1000个列呀。
解决方案七:
我想知道,这样的东西谁看
解决方案八:
根据不同的用户显示不同的列,200多列,谁需要看这么多啊!
解决方案九:
引用楼主u010537010的回复:

我有一个主单列表,有258列,因为针对的客户比较多,所以列相对比较多,但是现在问题来了,首次加载时,这些列我是动态绑定上去的,结果在初始化列名时耗费3秒钟,请问有没有好的解决方案this.gvFmsBookingNote.DataSource=dt;#endregionDateTimedt1=DateTime.Now;#region设置列名this.gvFmsBookingNote.Columns["NoteIsPX"].HeaderText="拼箱";this.gvFmsBookingNote.Columns["NotePXNos"].HeaderText="拼箱委托单号";this.gvFmsBookingNote.Columns["ChargeInvoiceAmount"].HeaderText="应收款需开票总额";this.gvFmsBookingNote.Columns["PayInvoiceAmount"].HeaderText="应付款需开票总额";this.gvFmsBookingNote.Columns["InvoiceBalanceAmount"].HeaderText="应收/付款需开票差额";this.gvFmsBookingNote.Columns["IsChangeShipper"].HeaderText="多个发货人";this.gvFmsBookingNote.Columns["LoadRequest"].HeaderText="装货要求";this.gvFmsBookingNote.Columns["DeliveryRequest"].HeaderText="送货要求";this.gvFmsBookingNote.Columns["SaleManETA"].HeaderText="预报离港";this.gvFmsBookingNote.Columns["SaleManETD"].HeaderText="预报到港";this.gvFmsBookingNote.Columns["days_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["Notewk_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["Noteyy_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["months_LoadDate"].Visible=false;this.gvFmsBookingNote.Columns["HYF"].Visible=false;this.gvFmsBookingNote.Columns["HYFChecked"].Visible=false;this.gvFmsBookingNote.Columns["HyfUnChecked"].Visible=false;this.gvFmsBookingNote.Columns["wk"].Visible=false;this.gvFmsBookingNote.Columns["yy"].Visible=false;this.gvFmsBookingNote.Columns["Notewk"].Visible=false;this.gvFmsBookingNote.Columns["Noteyy"].Visible=false;this.gvFmsBookingNote.Columns["months"].Visible=false;this.gvFmsBookingNote.Columns["days"].Visible=false;this.gvFmsBookingNote.Columns["OrganizationCode"].Visible=false;this.gvFmsBookingNote.Columns["IsWX"].HeaderText="外协";this.gvFmsBookingNote.Columns["BlNos"].HeaderText="提/运单号";this.gvFmsBookingNote.Columns["CtnrNos"].HeaderText="箱号";this.gvFmsBookingNote.Columns["IsRoad"].Visible=false;this.gvFmsBookingNote.Columns["Status"].Visible=false;//this.gvFmsBookingNote.Columns["AbolisherName"].Visible=false;//this.gvFmsBookingNote.Columns["AbolishDate"].Visible=false;//this.gvFmsBookingNote.Columns["FbsAbolisherName"].Visible=false;//this.gvFmsBookingNote.Columns["FbsAbolishDate"].Visible=false;this.gvFmsBookingNote.Columns["IsCancel"].HeaderText="作废";this.gvFmsBookingNote.Columns["CancelUserName"].HeaderText="作废人";this.gvFmsBookingNote.Columns["CancelRemark"].HeaderText="作废原因";this.gvFmsBookingNote.Columns["CancelDate"].HeaderText="作废日期";this.gvFmsBookingNote.Columns["IsAudit_Booking"].HeaderText="订舱审核";this.gvFmsBookingNote.Columns["AuditUserName_Booking"].HeaderText="订舱审核人";this.gvFmsBookingNote.Columns["AuditDate_Booking"].HeaderText="订舱审核日期";this.gvFmsBookingNote.Columns["IsChangeConsignee"].HeaderText="多个收货人";this.gvFmsBookingNote.Columns["IsRoad"].HeaderText="公路运输";this.gvFmsBookingNote.Columns["CustomerAddress"].HeaderText="委托客户地址";this.gvFmsBookingNote.Columns["CustomerLinkMan"].HeaderText="委托客户联系人";this.gvFmsBookingNote.Columns["CustomerTel"].HeaderText="委托客户电话";if(SystemProfileCache.GetSystemProfileValue("CustomerCompanyName").Equals("海恒")){if(CanViewConsigneeLinkManTel&&CanViewShipperLinkManTel){this.gvFmsBookingNote.Columns["CustomerLinkMan"].HeaderText="委托客户联系人";this.gvFmsBookingNote.Columns["CustomerTel"].HeaderText="委托客户电话";}else{this.gvFmsBookingNote.Columns["CustomerLinkMan"].Visible=false;this.gvFmsBookingNote.Columns["CustomerTel"].Visible=false;}}this.gvFmsBookingNote.Columns["TaskStatus"].HeaderText="箱状态";this.gvFmsBookingNote.Columns["VesselCompanyName"].HeaderText="船公司";this.gvFmsBookingNote.Columns["Status"].HeaderText="状态";this.gvFmsBookingNote.Columns["IsSign"].HeaderText="客户签收";this.gvFmsBookingNote.Columns["CustomerShortName"].HeaderText="委托单位";this.gvFmsBookingNote.Columns["ShipperShortName"].HeaderText="发货单位";this.gvFmsBookingNote.Columns["ConsigneeShortName"].HeaderText="收货单位";this.gvFmsBookingNote.Columns["ForwarderAgentShortName"].HeaderText="代理人";this.gvFmsBookingNote.Columns["NotifyShortName"].HeaderText="通知人";this.gvFmsBookingNote.Columns["InsurerShortName"].HeaderText="保险公司";this.gvFmsBookingNote.Columns["POLPortCHIName"].HeaderText="装货港";this.gvFmsBookingNote.Columns["PODPortCHIName"].HeaderText="卸货港";this.gvFmsBookingNote.Columns["LoadAddress"].HeaderText="装货地址";this.gvFmsBookingNote.Columns["DeliveryAddress"].HeaderText="卸货地址";this.gvFmsBookingNote.Columns["LoadFeePlaceName"].HeaderText="装货地";this.gvFmsBookingNote.Columns["DeliveryFeePlaceName"].HeaderText="卸货地";this.gvFmsBookingNote.Columns["VesselName"].HeaderText="船名";this.gvFmsBookingNote.Columns["VoyName"].HeaderText="船次";this.gvFmsBookingNote.Columns["BookingNoteID"].Visible=false;this.gvFmsBookingNote.Columns["BillNo"].HeaderText="委托单号";this.gvFmsBookingNote.Columns["CustomerBillNo"].HeaderText="客户单号";this.gvFmsBookingNote.Columns["SalesManName"].HeaderText="业务员";this.gvFmsBookingNote.Columns["CanvassMode"].HeaderText="揽货方式";this.gvFmsBookingNote.Columns["DeliveryType"].HeaderText="运输条款";this.gvFmsBookingNote.Columns["PayMode"].HeaderText="付款方式";this.gvFmsBookingNote.Columns["LoadDate"].HeaderText="装货日期";this.gvFmsBookingNote.Columns["BigCategoryName"].HeaderText="货物分类";this.gvFmsBookingNote.Columns["IsRF"].HeaderText="是否冻柜";this.gvFmsBookingNote.Columns["IsDanger"].HeaderText="是否危险品";this.gvFmsBookingNote.Columns["IsInsure"].HeaderText="代买保险";this.gvFmsBookingNote.Columns["PlanDeliveryTime"].HeaderText="计划送货日期";this.gvFmsBookingNote.Columns["CreateUser"].HeaderText="受单人";this.gvFmsBookingNote.Columns["CreateTime"].HeaderText="受单日期";this.gvFmsBookingNote.Columns["ConfirmUser"].HeaderText="确认人";this.gvFmsBookingNote.Columns["ConfirmTime"].HeaderText="确认日期";this.gvFmsBookingNote.Columns["Remark"].HeaderText="备注";

3楼的建议是正解,显示信息过多,滚动条那么长,拖来拖去用户体验非常不好,建议分类分级处理
解决方案十:
挑些重要的列显示,和客户协商下,不可能这多都要一开始显示,这样客户还要拖曳来看呢,也烦的,弄些其他的分类查看功能
解决方案十一:
如果你非要搞这么多,我也是醉了
解决方案十二:
你们不知道,我系统是有自定义列功能的,也就是说每个客户他可以设置他需要看的列,因为这个列表不是给一个客户用的,每个客户要求千差万别,而且这些列也不是一个表的,都是通过视图关联的。
解决方案十三:
引用11楼u010537010的回复:

你们不知道,我系统是有自定义列功能的,也就是说每个客户他可以设置他需要看的列,因为这个列表不是给一个客户用的,每个客户要求千差万别,而且这些列也不是一个表的,都是通过视图关联的。

你这种设计既费事又不好使,你把自己当作用户,你愿意用这个鬼东西么?把不同角色所需要的内容不负责任地简单合并在一起,还自以为是地实现一个自定义列功能,把这一切问题甩回给用户自己解决,这不叫做软件。
解决方案十四:
这么多列应该也看不清楚吧,你打印一下列生成与datasouce绑定的时间,看看哪一部分是性能瓶颈
解决方案十五:
显示256列,也是醉了,谁这么吃饱了没事做一列列看过去啊

时间: 2024-10-16 06:31:49

winform下DaagridVIEW列太多时,设置列名太慢的相关文章

winform 里CheckedlistBox如何将数据库设置好的值绑定到该控件并置为checked

问题描述 在Winform下,CheckedlistBox如何将数据库设置好的值绑定到该控件并置为checked?我的思路是:1.先将数据库所有数据绑定起来,2.再读取数据库中设置好的值,放入DataTable.3.根据2.中的DataTable的值遍历并与1.中的值对比,如果相等就置为checked.现在的问题是第三步如何写?我没有找到控件方法,向大家请教了. 解决方案 解决方案二:你是从数据库里面查询到的值然后绑定到checkedListBox上面吗,然后从另外一张表里面读取字段的值要和ch

winform下的datagrid问题

问题描述 winform下的datagrid问题,我的datagrid中的数据是从数据库中的读出来的,我想在选中其中一项时,在旁边显示其详细信息,请问怎么知道用户选中了哪一项,值怎么得到? 解决方案 解决方案二:通过选择当前行得到这行的主键,你不就知道是哪一项了吗?解决方案三:你不是可以得到选中项所在行的主键吗?然后根据主键来获得详细说明的信息,或者你把详细信息也放到DATATABLE中,不过并不显示在DATAGRID中,然后在选中一个网格后,把这个字段的值读出来显示.解决方案四:怎么获得主键?

Winform 下无闪烁走马灯效果实现

Winform 下无闪烁走马灯效果实现 作者:肖波    最近需要在Winform项目中实现一个走马灯的效果,一开始用了一些办法比如移动Label控件,效果总是不太好,移动文本时总有闪烁的现象.后来找了一个国外的开源控件,应用了一下,效果还不错.仔细阅读了一下代码,发现还有一些地方值得改进,现把代码以及改动说明贴出来,和大家分享.    控件出处:http://www.codeproject.com/KB/miscctrl/ScrollingTextControlArtic.aspx     我

Apache下服务器虚拟主机的设置方法介绍

一.WWW服务器虚拟主机原理 WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器.比如由一台机器同时提供http://www.company1.com, http://www.company2.com 等的WWW服务,而浏览这些WWW站点的用户感觉不到这种方式下跟由不同的机器提供不同的服务有什么差别. 使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度.另外,对于个人用户,也可以使用这种虚拟主机方式

Excel电子表格中的行高和列宽怎么设置?

  Excel电子表格中的行高和列宽怎么设置?在平常利用Excel电子表格进行办公中时,制作表格是最基本最常见的事了,但对于初学者来说,该如何设置行高和列宽,有时候甚至是跳行或跳列进行设置.下面小编就为大家详细介绍一下,来看看吧. 步骤 在进行表格制作过程中,进行行高和列宽的调整是必不可少的,一般初学者都会选择直接拉.实际上直接拉野可以,只是有时候不是很规范. 选中要设置的行,在标题栏"5"上点击右键即会弹出工具栏,点击"行高"进入. 在"行高"

求Winform下的视频控件

问题描述 想问下Winform下有哪些可用的视频控件啊,类似于一个button那样,拖进来可以播放各种格式的视频,谢啦~不包括调用com组件中的Windowsmediaplayer(因为有些电脑会关闭这个服务) 解决方案 解决方案二:winform的我只知道得用WMP解决方案三: 解决方案四:右键点任意一个组件---选择项--com组件找到mediaplayer解决方案五:引用2楼starfd的回复:太感谢啦解决方案六:引用3楼starfd的回复: 右键点任意一个组件---选择项--com组件找

excel-Excel 一张表格到下一个列的极差

问题描述 Excel 一张表格到下一个列的极差 极差是最大值减最小值 然后我要算一张表格从上到下一个列的极差 为什么不能直接算好第一个以后直接往下拉 难道还要设置么 请告诉我怎么设置 解决方案 如果数据在A列,那么输入以下数据,得到相应结果 最大值=MAX(A:A) 最小值=MIN(A:A) 极差=MAX(A:A)-MIN(A:A)

struts 2-麻烦各位大神给我详细解释下下列代码,我理解起来太难了

问题描述 麻烦各位大神给我详细解释下下列代码,我理解起来太难了 麻烦各位大神给我详细解释下下列代码,我理解起来太难了,尤其是"var url"后边的一段,希望大神能够解释的彻底点,万分感激 <s:form action="Add" id="form1" theme="simple" > <jsp:include page='/res/inc/inc_form_List.jsp' flush='true'/&g

c#的winform下如何把图片分为多个热区,最好是有控件?

问题描述 c#的winform下如何把图片分为多个热区,图片可以进行自行绘制,划分 解决方案 解决方案二:放面板进去,再设置面板为透明,就可以点击图片(其实是面板)进行点击事件.解决方案三:winform很挫,它没有这类"矢量不规则边界"的图层(或者叫控件)叠加机制.你只能自己开发控件(但是要为控件支持几十种行为,例如拾取.拖放.缩放.填充.半透明.组合子控件.各种事件冒泡,等等).winform本身就不是一个多媒体程序开发平台.你选择winform,只能做点简单的OA,录录数据也就可