WCF返回表datatable时的解决

在WCF中有时返回值类型是一张表,就会遇到反序列化的问题。解决该问题我归纳了两种方法:

1、根据Model层的类,在服务器端将Table转化成List,在客户端再将List转化为table

  /// 将集合类转换成DataTable
        /// </summary>
        /// <param name="list">集合</param>
        /// <returns></returns>
        public static DataTable ToDataTable(IList list)
        {
            DataTable result = new DataTable();
            if (list.Count > 0)
            {
                PropertyInfo[] propertys = list[0].GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    result.Columns.Add(pi.Name, pi.PropertyType);
                }

                for (int i = 0; i < list.Count; i++)
                {
                    ArrayList tempList = new ArrayList();
                    foreach (PropertyInfo pi in propertys)
                    {
                        object obj = pi.GetValue(list[i], null);
                        tempList.Add(obj);
                    }
                    object[] array = tempList.ToArray();
                    result.LoadDataRow(array, true);
                }
            }
            return result;
        }

 

2、直接在服务端为表命名,Dt.TableName="aaa";

时间: 2024-12-22 08:03:25

WCF返回表datatable时的解决的相关文章

AJAX页面参数相同时只返回缓存的内容的解决办法

AJAX页面参数相同时只返回缓存的内容的解决办法 常利用AJAX写一些页面无刷新的内容获取页面,这种方式很快捷也很方便,但其中有一个问题,就是如果两次提交的参数相同时,返回的内容只返回上次获取的内容,如果我们在第一次修改了参数,第二次再次调用却会发现页面根本没有改变.这样的情况是是为AJAX获取时先检查本机缓存,如果本机缓存已有相同内容,则不访问远端服务器.这样的操作倒是可以提高速度和减少服务器压力.但带来的弊端也是显而易见的. 为了解决这个问题.我们必须在获取页加上一个额外的参数.比较简单的方

ThinkPHP提交表单时默认自动转义的解决方法_php实例

本文实例讲述了ThinkPHP提交表单时默认自动转义的解决方法.分享给大家供大家参考.具体方法如下: 一.问题: 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线. 在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不想给单引号和双引号加上反斜线,在ThinkPHP中提交表单插入数据的时候,单引号和双引号是会被自动转义的,就是会自动的加上反斜线,但是我不

向各位大神请教在我通过外键id查找主键表内容时出现不能转换的问题怎么解决

问题描述 向各位大神请教在我通过外键id查找主键表内容时出现不能转换的问题怎么解决 解决方案 先上代码 拿出来再看什么情况 解决方案二: 猜测是类转换异常造成的 解决方案三: 其实是我dao中的id和映射表中的id有大小写的区别.

wcf返回值属性是引用类型报错

问题描述 wcf返回值属性是引用类型报错 套接字连接已中止.这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的.本地套接字超时是"00:09:59.9844000", wcf 方法放回类型是类,类里面有个属性是object.如果object存放值类型.返回时就没事,如果是引用类型或者datatable.就报这个错误.

WCF服务端运行时架构体系详解[上篇]

WCF的服务端架构体系又可以成为服务寄宿端架构体系.我们知道,对于一个基于某种类型的服务进行寄宿只需要使用到一个唯一的对象,那就是ServiceHost.甚至在某种语境下,我们所说的服务实际上就是指的对应的ServiceHost对象.整个服务寄宿过程包括两个阶段,即服务描述的创建和服务端运行框架的建立.而第一个阶段创建的服务描述是为了第二个阶段对服务端运行时框架建立服务的,所以我们有必要在对服务描述进行简单的介绍. 目录: 一.从服务描述(Service Description)谈起 二.服务端

wcf返回值的属性是引用类型就报错

问题描述 wcf返回值的属性是引用类型就报错 套接字连接已中止.这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的.本地套接字超时是"00:09:59.9844000", wcf 方法放回类型是类,类里面有个属性是object.如果object存放值类型.返回时就没事,如果是引用类型或者datatable.就报这个错误.

ckeditor-CKEDITOR模态窗口提交表单时能不弹出新窗口吗?

问题描述 CKEDITOR模态窗口提交表单时能不弹出新窗口吗? 按照http://www.iteye.com/topic/749437 该文章内容实现ckeditor在jsp下增加图片上传功能中遇到上传图片的模态窗口在表单提交时,总是弹出新窗口,我在 中间添加了.还是不管用,那位大侠能帮助解决一下? 以下是代码 修改控件代码: ` function addUploadButton(editor){ CKEDITOR.on('dialogDefinition', function( ev ){ v

设计注册表单时关于密码遮蔽问题的探讨

摘要: 很实用的一篇关于密码遮蔽问题的探讨,翻译贡献给大家,希望对大家在设计注册表单时有所启示. 密码遮蔽是一种很老做法,通常用于注册和登录的表单,用来防止窥探者看到用户的 很实用的一篇关于密码遮蔽问题的探讨,翻译贡献给大家,希望对大家在设计注册表单时有所启示. 密码遮蔽是一种很老做法,通常用于注册和登录的表单,用来防止窥探者看到用户的密码.尽管密码遮蔽是很好的保护安全的做法,它仍可能危及到注册表单的体验.当用户注册时,他们期待填写一个无争议.没有后顾之忧的表单,而密码遮蔽会起到反作用. 一.适

php提交表单时判断 if($

应该这样用if(isset($_POST['submit'])) { } 提交表单时 if($_POST[submit])与 if(isset($_POST[submit])) 的区别 第一种方法会出现一个warning,第二种相对更严谨. 还有就是POST的键名最好加上单引号,这样效率稍微高点(大概3-4倍). 恩 差不多那个意思,如果设置了这个变量则返回true PHP中if(isset($_POST['Submit']))是什么意思 isset -- 检测变量是否设置 判断post过来的数