C#定义了静态的DataTable,但会被覆盖?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#定义了静态的DataTable,但会被覆盖?相关的知识,希望对你有一定的参考价值。

多个用户打开这个网页,后者会覆盖前者查看的保存到DataTable中的数据,导致多个老用户看到的都是最新那个用户看到的数据.有没什么方法解决这个问题,

DataTable是引用类型
你只要对引用操作,所有的引用都会同时变更
要么你用动态的,每次New DaTaTable,然后把它存到用户关联的一个对象中
你说你用的是网页?你的数据是在哪里设置的,又是在哪里用的?追问

你好,我是在一个网页定义了一个静态DataTable,然后打开这个网页会根据网址的不同参数去装载不同数据到这个DataTable.比如你先打开网页,然后我也打开,那么你的DataTable显示的实际是我打开的网页的数据,,这个有没办法解决可以解决,让不同用户互不影响.

追答

对于网页来说有服务器和客户端的说法

我假定你的Table是在服务端的,你使用的是不同的浏览器访问的一个API,我觉得你可能是用的Webform技术
你要在给客户端返回数据的时候重新New一个DataTable接收数据库的数据,然后返回给前端,而不要赋值给Static的DataTable
但凡用的新的WebAPI,这个问题也很好解决

参考技术A

    不要用静态

    不仅不要用静态,还要仔细处理用户session,避免多线程(用户)引起的混乱

    如果是asp.net(core),有框架自带的session管理可以很方便地实现

C#怎么讲DataTable导出到Excel

用NOPI,其实 Excel文件也是有一定格式的,office只是能对这种格式准确地进行读写。
那么,NOPI也是能对Excel进行操作,不依赖于电脑是的Excel软件。
它也定义了 sheet ,workbook,cell,row ,column等对象 ,方便操作Excel对象,sheet表单,单元格,行,列 等对象 。
学习一下就会了。

参考网址:
http://blog.csdn.net/pukuimin1226/article/details/7684910

dll文件你可以从网上下载。很多地方都有。你没有找到的话可以联系我邮箱,pukuimin@qq.com
参考技术A 安装office添加excel的com组件就可以。 参考技术B 可以通过OLE连接Excel作为数据源,然后用SQL语句向Excel中插数据

以上是关于C#定义了静态的DataTable,但会被覆盖?的主要内容,如果未能解决你的问题,请参考以下文章

C# 定义了datatable 但是提示上下文不存在.

C#中定义了一个DataTable,怎样求得表中的最大值,并返回对应的行和列的下标啊

C# 将 DataTable 绑定到现有 DataGridView 列定义

C# 直接创建一个DataTable,并为之添加数据(自定义DataTable) 转

C#:DataTable 只获取搜索结果的一行

c# DataTable中使用排序的时候注意事项