Silverlight 下的 DataSet

http://silverlightdataset.net/silverlightdataset/Default.aspx

 

*.使用后的感受: 下载了源代码,升级到 VS2010下的 Silverlight 4的程序,使用时,发现 DataTable 的排序存在问题(不正确) ,就修改了一下。在18000条数据的情况下,排序速度极慢 ,估计有5分钟了,还没有排序完成。用快速排序算法改写了排序部分,速度极大提高。估计也就是10多秒就完成了排序。DataTable, DataView 对象提供的是 List<DataRow>列表,无法显示,必须通过GetBindableData方法转换为 List<T结构>列表,T结构是内部动态创建的类定义,18000条数据转换为 List<T结构>列表又耗时很长 ,估计有5分钟了。

 

总结:小数据量(估计是2000以内,没有仔细测过)使用这个库,会很好用。客户端写代码很灵活。大数据量显示缓慢,不适合使用。

需要下载:Silverlight.DataSetSilverlight.DataSetConnector 下面是示例: DataTable Dt = new DataTable(); DataColumn col1 = new DataColumn("CompanyName"); Dt.Columns.Add(col1); DataColumn col2 = new DataColumn("Email"); Dt.Columns.Add(col2); DataRow Row = Dt.NewRow(); Row[0] = "杭州市公司"; Row[1] = "TEL110"; Dt.Rows.Add(Row); grid1.DataContext = Dt.GetBindableData(new Connector()); Silverlight与Wcf传递DataTable(以下均指我们下载这个程序集中的DataTable) 由于Silverlight这个程序集中使用的System.dll是C:\Program Files\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\System.dll(2.0.5.0版本)而不是.net framework中的那个System.dll(2.0.0.0.0版本),所以在Wcf中不能直接使用DataTable,那么如何将DataTable信息从Wcf传递到Silverlight中呢,就是Wcf将DataSet转成string或byte[]传递到Silverlight然后再将其还原成DataSet,看下面的代码示列: Wcf端: public string GetRecordset(string QuerySql) { DataTable Dt = DbAgent.GetRecordset(QuerySql); DataSet ds = new DataSet(); ds.Tables.Add(Dt); return Silverlight.DataSetConnector.Connector.ToXml(ds); } Silverlight端: void client_GetRecordsetCompleted(object sender, SilverlightApplication1.DbServer.GetRecordsetCompletedEventArgs e) { if (e.Error != null) { MessageBox.Show(e.Error.Message + e.Error.StackTrace); } else { DataSet ds = new DataSet(); ds.FromXml(e.Result); DataContext = ds.Tables[0].GetBindableData(new Connector()); } } 此DataTable中存入的数据不是object类型的,而全是string类型的,如果数据库中存的值为null,那么取出来的值是null而不是DbNull.Value.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值