将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下:

1 DataTable dt=new DataTable();
2  PagedCollectionView m_pagedCollectionView =  new PagedCollectionView(dt.GetBindableData(new Connector()));
3 this.daDatas.ItemsSource = m_pagedCollectionView;

View Code

问题:如果直接调用GetBindableData方法的话,我们得到的所有PagedCollectionView数据将都是string类型的,为了得到数据类型的数据,我们可以自己写转换方法

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Reflection;
using System.Reflection.Emit;
using System.Threading;
using SuperMap.Web.ISDotNET6;
using WaterWebGIS.MainFrame.BL;
using SL40PropertyGrid;
using System.ComponentModel;
using Silverlight;
using WaterWebGIS.QueryStatServiceProxy;
using DataColumn = Silverlight.DataColumn;
using DataRow = Silverlight.DataRow;
using DataTable = Silverlight.DataTable;
using FieldInfo = WaterWebGIS.QueryStatServiceProxy.FieldInfo;namespace WaterWebGIS.Business.DataModel
{public class TypeFactory{private static List<CategoryPriorityInfo> s_categoryPriorityInfo;private static Dictionary<string, Type> s_dicTypes;private static AssemblyBuilder s_asmBuilder;private static ModuleBuilder s_modBuilder;/// <summary>/// 获取分类优先级信息/// </summary>public static void GetCategoryPriorityInfo(){QueryStatServiceSoapClient client = (QueryStatServiceSoapClient)WaterWebGIS.Business.Utility.CreateWebServiceObject(typeof(QueryStatServiceSoapClient), "/WS/QueryService/QueryStatService.asmx");client.GetCategoryPriorityAsync();client.GetCategoryPriorityCompleted += new EventHandler<GetCategoryPriorityCompletedEventArgs>(client_GetCategoryPriorityCompleted);}static void client_GetCategoryPriorityCompleted(object sender, GetCategoryPriorityCompletedEventArgs e){if (e.Error == null){s_categoryPriorityInfo = new List<CategoryPriorityInfo>();foreach (CategoryPriorityInfo info in e.Result){s_categoryPriorityInfo.Add(info);}}}/// <summary>/// 将数据库中的基础数据类型转换为.Net框架中的数据类型/// </summary>/// <param name="dbType">将数据库中保存的类型信息转换成.net中相应的类型</param>public static Type ToDotNetTypeFromDBType(string dbType){if (dbType.ToLower() == "varchar" || dbType.ToLower() == "datetime"){return typeof(System.String);}else if (dbType.ToLower() == "int"){return typeof(System.Int32);}else if (dbType.ToLower() == "float"){return typeof(System.Double);}return typeof(DBNull);}/// <summary>/// 生成应用程序集和模块/// </summary>private static void GenerateAssemboyAndModule(){if (s_asmBuilder == null){AssemblyName assemblyName = new AssemblyName();assemblyName.Name = "DynamicORMapper";AppDomain thisDomain = Thread.GetDomain();s_asmBuilder = thisDomain.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);s_modBuilder = s_asmBuilder.DefineDynamicModule(assemblyName.Name);}}/// <summary>/// 创建类型/// </summary>/// <param name="modBuilder">模块生成器</param>/// <param name="layer">图层信息</param>/// <returns>类型信息</returns>private static Type CreateType(ModuleBuilder modBuilder, WaterWebGIS.QueryStatServiceProxy.GISLayer layer){TypeBuilder typeBuilder = modBuilder.DefineType(layer.LayerNameEN, TypeAttributes.Public | TypeAttributes.Class | TypeAttributes.AutoClass | TypeAttributes.AnsiClass | TypeAttributes.BeforeFieldInit | TypeAttributes.AutoLayout);CreateConstructor(typeBuilder);CreateProperties(typeBuilder, layer.FieldENlist);return typeBuilder.CreateType();}/// <summary>/// 创建类型/// </summary>/// <param name="modBuilder">模块生成器</param>/// <param name="table">DataTable信息</param>/// <returns>类型信息</returns>private static Type CreateType(ModuleBuilder modBuilder, DataTable table){string tableName = "Table" + Environment.TickCount;TypeBuilder typeBuilder = modBuilder.DefineType(tableName, TypeAttributes.Public | TypeAttributes.Class | TypeAttributes.AutoClass | TypeAttributes.AnsiClass | TypeAttributes.BeforeFieldInit | TypeAttributes.AutoLayout);CreateConstructor(typeBuilder);CreateProperties(typeBuilder, table.Columns);return typeBuilder.CreateType();}/// <summary>/// 创建类构造函数/// </summary>/// <param name="typeBuilder">类型生成器</param>private static void CreateConstructor(TypeBuilder typeBuilder){ConstructorBuilder construtor = typeBuilder.DefineConstructor(MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.RTSpecialName, CallingConventions.Standard, new Type[0]);ConstructorInfo conObj = typeof(object).GetConstructor(new Type[0]);ILGenerator il = construtor.GetILGenerator();il.Emit(OpCodes.Ldarg_0);il.Emit(OpCodes.Call, conObj);il.Emit(OpCodes.Ret);}/// <summary>/// 创建类属性信息/// </summary>/// <param name="typeBuilder">类型生成器</param>/// <param name="fieldInfoCollection">图层字段集合</param>private static void CreateProperties(TypeBuilder typeBuilder, ObservableCollection<WaterWebGIS.QueryStatServiceProxy.FieldInfo> fieldInfoCollection){foreach (WaterWebGIS.QueryStatServiceProxy.FieldInfo fi in fieldInfoCollection){if (fi.IsVisible == true){FieldBuilder fieldBuilder = typeBuilder.DefineField("m" + fi.FieldENName, ToDotNetTypeFromDBType(fi.FieldType), FieldAttributes.Private);PropertyBuilder propertyBuilder = typeBuilder.DefineProperty(fi.FieldENName, PropertyAttributes.HasDefault, ToDotNetTypeFromDBType(fi.FieldType), null);Type[] ctorParams = new Type[] { typeof(string) };ConstructorInfo classCtorInfo = typeof(DisplayNameAttribute).GetConstructor(ctorParams);CustomAttributeBuilder customAttributeBuilder = new CustomAttributeBuilder(classCtorInfo, new object[] { fi.FieldAlias });propertyBuilder.SetCustomAttribute(customAttributeBuilder);classCtorInfo = typeof(CategoryAttribute).GetConstructor(ctorParams);customAttributeBuilder = new CustomAttributeBuilder(classCtorInfo, new object[] { fi.Category });propertyBuilder.SetCustomAttribute(customAttributeBuilder);ctorParams = new Type[] { typeof(int) };classCtorInfo = typeof(CategoryPriorityAttribute).GetConstructor(ctorParams);customAttributeBuilder = new CustomAttributeBuilder(classCtorInfo, new object[] { GetCategoryPriorityValueByCategoryName(fi.Category) });propertyBuilder.SetCustomAttribute(customAttributeBuilder);MethodAttributes getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig;MethodBuilder getMethodBuilder = typeBuilder.DefineMethod("get_" + fi.FieldENName, getSetAttr, ToDotNetTypeFromDBType(fi.FieldType), Type.EmptyTypes);ILGenerator ilGenerator = getMethodBuilder.GetILGenerator();ilGenerator.Emit(OpCodes.Ldarg_0);ilGenerator.Emit(OpCodes.Ldfld, fieldBuilder);ilGenerator.Emit(OpCodes.Ret);MethodBuilder setMethodBuilder = typeBuilder.DefineMethod("set_" + fi.FieldENName, getSetAttr, null, new Type[] { ToDotNetTypeFromDBType(fi.FieldType) });ilGenerator = setMethodBuilder.GetILGenerator();ilGenerator.Emit(OpCodes.Ldarg_0);ilGenerator.Emit(OpCodes.Ldarg_1);ilGenerator.Emit(OpCodes.Stfld, fieldBuilder);ilGenerator.Emit(OpCodes.Ret);propertyBuilder.SetGetMethod(getMethodBuilder);propertyBuilder.SetSetMethod(setMethodBuilder);}}}/// <summary>/// 根据分类名称获取该分类的显示优先级/// </summary>/// <param name="categoryName">分类名称</param>/// <returns>显示优先级</returns>private static int GetCategoryPriorityValueByCategoryName(string categoryName){if (s_categoryPriorityInfo != null){foreach (CategoryPriorityInfo info in s_categoryPriorityInfo){if (info.CategoryName == categoryName){return info.Priority;}}}return int.MaxValue;}/// <summary>/// 创建类属性信息/// </summary>/// <param name="typeBuilder">类型生成器</param>/// <param name="dataColumnCollection">DataColumnCollection</param>private static void CreateProperties(TypeBuilder typeBuilder, DataColumnCollection dataColumnCollection){foreach (DataColumn dataColumn in dataColumnCollection){FieldBuilder fieldBuilder = null;if (dataColumn.DataType == typeof(DateTime)){fieldBuilder = typeBuilder.DefineField("m_" + dataColumn.ColumnName, typeof(string), FieldAttributes.Private);}else{fieldBuilder = typeBuilder.DefineField("m_" + dataColumn.ColumnName, typeof(string), FieldAttributes.Private);}PropertyBuilder propertyBuilder = null;if (dataColumn.DataType == typeof(DateTime)){propertyBuilder = typeBuilder.DefineProperty(dataColumn.ColumnName, PropertyAttributes.HasDefault, typeof(string), null);}else{propertyBuilder = typeBuilder.DefineProperty(dataColumn.ColumnName, PropertyAttributes.HasDefault, typeof(string), null);}Type[] ctorParams = new Type[] { typeof(string) };ConstructorInfo classCtorInfo = typeof(DisplayNameAttribute).GetConstructor(ctorParams);MethodAttributes getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig;MethodBuilder getMethodBuilder = typeBuilder.DefineMethod("get_" + dataColumn.ColumnName, getSetAttr, typeof(string), Type.EmptyTypes);ILGenerator ilGenerator = getMethodBuilder.GetILGenerator();ilGenerator.Emit(OpCodes.Ldarg_0);ilGenerator.Emit(OpCodes.Ldfld, fieldBuilder);ilGenerator.Emit(OpCodes.Ret);MethodBuilder setMethodBuilder = typeBuilder.DefineMethod("set_" + dataColumn.ColumnName, getSetAttr, null, new Type[] { typeof(string) });ilGenerator = setMethodBuilder.GetILGenerator();ilGenerator.Emit(OpCodes.Ldarg_0);ilGenerator.Emit(OpCodes.Ldarg_1);ilGenerator.Emit(OpCodes.Stfld, fieldBuilder);ilGenerator.Emit(OpCodes.Ret);propertyBuilder.SetGetMethod(getMethodBuilder);propertyBuilder.SetSetMethod(setMethodBuilder);}}/// <summary>/// 根据类名获取相应的类信息/// </summary>/// <param name="typeName">类名</param>/// <returns>类</returns>public static Type GetTypeByTypeName(string typeName){try{if (s_dicTypes == null){if (s_asmBuilder == null){GenerateAssemboyAndModule();}s_dicTypes = new Dictionary<string, Type>();foreach (WaterWebGIS.QueryStatServiceProxy.GISLayer gisLayer in BasicGISService.GetLayers().LayerList){try{Type type = CreateType(s_modBuilder, gisLayer);s_dicTypes.Add(gisLayer.LayerNameEN, type);}catch{}}}if (s_dicTypes.ContainsKey(typeName)){return s_dicTypes[typeName];}else{return null;}}catch{return null;}}public static object CreateObjectBaseOnLayerInfoAndObjectValue(WaterWebGIS.QueryStatServiceProxy.GISLayer gisLayer, SelectAction objectValue){try{Type type = GetTypeByTypeName(gisLayer.LayerNameEN);if (type != null){object obj = Activator.CreateInstance(type);if (obj != null){foreach (WaterWebGIS.QueryStatServiceProxy.FieldInfo fi in gisLayer.FieldENlist){string fieldValue = BasicGISService.GetLayers().GetValueFromRecord(objectValue.RecordSet, objectValue.Record, fi.FieldENName);object value = ConvertStringValueToSpecifyTypeValue(fieldValue, fi.FieldType);if (fi.FieldType == "datetime"){if (((DateTime)value) == DateTime.MinValue){value = string.Empty;}else{value = value.ToString();}}if (fi.FieldType == "float"){value = Math.Round(Convert.ToDouble(value), 3);}PropertyInfo propertyInfo = type.GetProperty(fi.FieldENName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty);if (propertyInfo != null){propertyInfo.SetValue(obj, value, null);}}}return obj;}return null;}catch{return null;}}/// <summary>/// 将字符串值转换成指定类型的值/// </summary>/// <returns>转换后的对象值</returns>private static object ConvertStringValueToSpecifyTypeValue(string value, string dbType){if (dbType.ToLower() == "varchar"){return value;}else if (dbType.ToLower() == "int"){int temp = 0;int.TryParse(value, out temp);return temp;}else if (dbType.ToLower() == "float"){float temp = 0;float.TryParse(value, out temp);return temp;}else if (dbType.ToLower() == "datetime"){DateTime datetime;if (DateTime.TryParse(value, out datetime)){if (value != "0:00:00"){return datetime;}else{DateTime superMapDate = new DateTime(1899, 12, 30, 0, 0, 0);return superMapDate;}}else{return new DateTime();}}return null;}public static Type CreateTypeBaseOnDataTable(DataTable table){if (s_asmBuilder == null){GenerateAssemboyAndModule();}return CreateType(s_modBuilder, table);}/// <summary>/// 根据DataTable返回相应的对象集合/// </summary>/// <param name="table">DataTable</param>/// <returns>对象集合</returns>public static List<object> CreateObjectCollectionBaseOnDataTable(DataTable table){if (table == null){throw new ArgumentNullException("table不能为空!");}List<object> collection = new List<object>();try{Type type = CreateTypeBaseOnDataTable(table);if (type != null){foreach (DataRow row in table.Rows){object obj = Activator.CreateInstance(type);if (obj != null){foreach (DataColumn column in table.Columns){PropertyInfo propertyInfo = type.GetProperty(column.ColumnName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty);if (propertyInfo != null){if (!string.IsNullOrEmpty(row[column.ColumnName])){propertyInfo.SetValue(obj, ConvertStringToSpecifyType(column.DataType.FullName, row[column.ColumnName]), null);}}}}collection.Add(obj);}}return collection;}catch{return collection;}}private static object ConvertStringToSpecifyType(string typeName, string value){switch (typeName){case "System.Int32"://return int.Parse(value);return value;case "System.DateTime":DateTime? temp = DateTime.Parse(value);return temp.Value.ToString();case "System.Double"://return double.Parse(value);return value;case "System.Decimal"://return Decimal.Parse(value);return value;case "System.Byte"://return byte.Parse(value);return value;case "System.String":default:return value;}}#region  除指定列转换为string类型,其他类型按所给的数据类型进行转换//add by qzl @hn at20140424/// <summary>/// 除指定列转换为string类型,其他类型按所给的数据类型进行转换/// </summary>/// <param name="gisLayer">图层</param>/// <param name="objectValue">数据集</param>/// <param name="lstFiledName">转换为string类型的列</param>/// <returns></returns>public static object CreateObjectBaseOnLayerInfoAndObjectValueAndChangeText(GISLayer gisLayer, SelectAction objectValue, List<string> lstFiledName){try{Type type = GetTypeByTypeNameToString(gisLayer.LayerNameEN, lstFiledName);if (type != null){object obj = Activator.CreateInstance(type);if (obj != null){foreach (FieldInfo fi in gisLayer.FieldENlist){object value;if (lstFiledName.Contains(fi.FieldENName.ToLower())){value ="******";}else{string fieldValue = BasicGISService.GetLayers().GetValueFromRecord(objectValue.RecordSet, objectValue.Record, fi.FieldENName);value = ConvertStringValueToSpecifyTypeValue(fieldValue, fi.FieldType);if (fi.FieldType == "datetime"){value = ((DateTime)value) == DateTime.MinValue ? string.Empty : value.ToString();}if (fi.FieldType == "float"){value = Math.Round(Convert.ToDouble(value), 3);}}PropertyInfo propertyInfo = type.GetProperty(fi.FieldENName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty);if (propertyInfo != null){propertyInfo.SetValue(obj, value, null);}}}return obj;}return null;}catch{return null;}}/// <summary>/// 根据类名获取相应的类信息/// </summary>/// <param name="typeName">类名</param>/// <returns>类</returns>public static Type GetTypeByTypeNameToString(string typeName, List<string> lstFiledName){try{if (s_dicTypes == null){if (s_asmBuilder == null){GenerateAssemboyAndModule();}s_dicTypes = new Dictionary<string, Type>();foreach (GISLayer gisLayer in BasicGISService.GetLayers().LayerList){try{Type type = CreateTypeToString(s_modBuilder, gisLayer, lstFiledName);s_dicTypes.Add(gisLayer.LayerNameEN, type);}catch{}}}if (s_dicTypes.ContainsKey(typeName)){return s_dicTypes[typeName];}return null;}catch{return null;}}/// <summary>/// 创建类型/// </summary>/// <param name="modBuilder">模块生成器</param>/// <param name="layer">图层信息</param>/// <returns>类型信息</returns>private static Type CreateTypeToString(ModuleBuilder modBuilder, GISLayer layer, List<string> lstFiledName){TypeBuilder typeBuilder = modBuilder.DefineType(layer.LayerNameEN, TypeAttributes.Public | TypeAttributes.Class | TypeAttributes.AutoClass | TypeAttributes.AnsiClass | TypeAttributes.BeforeFieldInit | TypeAttributes.AutoLayout);CreateConstructor(typeBuilder);CreatePropertiesToString(typeBuilder, layer.FieldENlist, lstFiledName);return typeBuilder.CreateType();}/// <summary>/// 创建类属性信息/// </summary>/// <param name="typeBuilder">类型生成器</param>/// <param name="fieldInfoCollection">图层字段集合</param>private static void CreatePropertiesToString(TypeBuilder typeBuilder,IEnumerable<FieldInfo> fieldInfoCollection, List<string> lstFiledName){foreach (FieldInfo fi in fieldInfoCollection){if (fi.IsVisible == true){MethodBuilder setMethodBuilder;MethodBuilder getMethodBuilder;FieldBuilder fieldBuilder;PropertyBuilder propertyBuilder;MethodAttributes getSetAttr = MethodAttributes.Public | MethodAttributes.SpecialName |MethodAttributes.HideBySig;if (lstFiledName.Contains(fi.FieldENName.ToLower())){fieldBuilder = typeBuilder.DefineField("m" + fi.FieldENName,typeof(string),FieldAttributes.Private);propertyBuilder = typeBuilder.DefineProperty(fi.FieldENName,PropertyAttributes.HasDefault,typeof(string),null);getMethodBuilder = typeBuilder.DefineMethod("get_" + fi.FieldENName, getSetAttr,typeof(string),Type.EmptyTypes);setMethodBuilder = typeBuilder.DefineMethod("set_" + fi.FieldENName, getSetAttr,null,new Type[]{typeof(string)});                    }else{fieldBuilder = typeBuilder.DefineField("m" + fi.FieldENName,ToDotNetTypeFromDBType(fi.FieldType),FieldAttributes.Private);propertyBuilder = typeBuilder.DefineProperty(fi.FieldENName,PropertyAttributes.HasDefault,ToDotNetTypeFromDBType(fi.FieldType),null);getMethodBuilder = typeBuilder.DefineMethod("get_" + fi.FieldENName, getSetAttr,ToDotNetTypeFromDBType(fi.FieldType),Type.EmptyTypes);setMethodBuilder = typeBuilder.DefineMethod("set_" + fi.FieldENName, getSetAttr,null,new Type[]{ToDotNetTypeFromDBType(fi.FieldType)});}Type[] ctorParams = new Type[] { typeof(string) };ConstructorInfo classCtorInfo = typeof(DisplayNameAttribute).GetConstructor(ctorParams);CustomAttributeBuilder customAttributeBuilder = new CustomAttributeBuilder(classCtorInfo,new object[] { fi.FieldAlias });propertyBuilder.SetCustomAttribute(customAttributeBuilder);classCtorInfo = typeof(CategoryAttribute).GetConstructor(ctorParams);customAttributeBuilder = new CustomAttributeBuilder(classCtorInfo, new object[] { fi.Category });propertyBuilder.SetCustomAttribute(customAttributeBuilder);ctorParams = new Type[] { typeof(int) };classCtorInfo = typeof(CategoryPriorityAttribute).GetConstructor(ctorParams);customAttributeBuilder = new CustomAttributeBuilder(classCtorInfo,new object[]{GetCategoryPriorityValueByCategoryName(fi.Category)});propertyBuilder.SetCustomAttribute(customAttributeBuilder);ILGenerator ilGenerator = getMethodBuilder.GetILGenerator();ilGenerator.Emit(OpCodes.Ldarg_0);ilGenerator.Emit(OpCodes.Ldfld, fieldBuilder);ilGenerator.Emit(OpCodes.Ret);ilGenerator = setMethodBuilder.GetILGenerator();ilGenerator.Emit(OpCodes.Ldarg_0);ilGenerator.Emit(OpCodes.Ldarg_1);ilGenerator.Emit(OpCodes.Stfld, fieldBuilder);ilGenerator.Emit(OpCodes.Ret);propertyBuilder.SetGetMethod(getMethodBuilder);propertyBuilder.SetSetMethod(setMethodBuilder);}}}//end#endregion}
}

转载于:https://www.cnblogs.com/kurt/p/3688606.html

Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)相关推荐

  1. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  2. 【转载】 C#中使用int.TryParse方法将字符串转换为整型Int类型

    在C#编程过程中,将字符串string转换为整型int过程中,时常使用的转换方法为int.Parse方法,但int.Parse在无法转换的时候,会抛出程序异常,其实还有个int.TryParse方法可 ...

  3. python 动态_python实现动态创建类的方法分析

    本文实例讲述了python实现动态创建类的方法.分享给大家供大家参考,具体如下: python作为动态语言,如何在运行时动态创建类呢(python Creating classes dynamical ...

  4. Python中type()详解:动态创建类

    众所周知:type()函数可以查看变量的类型: 先看一个简单的列子来看一下type查看变量类型 class Animal():passa=Animal() print(type(a)) print(t ...

  5. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  6. python动态创建类_Python中通过参数动态创建扩展类(class)

    class Bar: def super_cool_function(self): print("Cool") 1.利用Python闭包动态扩展类 通过在内部创建并从函数返回它来动 ...

  7. java int.tryparse_【转载】 C#中使用int.TryParse方法将字符串转换为整型Int类型

    在C#编程过程中,将字符串string转换为整型int过程中,时常使用的转换方法为int.Parse方法,但int.Parse在无法转换的时候,会抛出程序异常,其实还有个int.TryParse方法可 ...

  8. 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

    数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...

  9. 中如何直接使用方法返回的值_java基础-2-方法、面向对象

    一.方法 1.1.定义:方法可以认为我们写程序中所要实现的某一个功能,方法中会包含很多条语句.流程控制.循环等,这些内容组合起来去处理一件事情. 1.2.方法的声明: 方法的声明位置必须写在类中,并且 ...

最新文章

  1. python 自动化办公 案例_python自动化工具之pywinauto实例详解
  2. 深度学习笔记第一门课第二周:神经网络的编程基础(上)
  3. python布尔系列_python数据分析类库系列-Numpy之布尔型索引
  4. VM虚拟机运行Windows11出现蓝屏
  5. 网站项目管理规范手册
  6. python代码_零基础小白必看篇:Python代码注释规范代码实例解析操作(收藏)
  7. php 获取 body json,从PHP中的JSON POST读取HTTP请求正文的问题
  8. Android开发遇到的异常及解决办法
  9. C++ 类的封装继承多态
  10. DHT11温湿度传感器学习
  11. 分酒问题matlab代码,KPCA用于葡萄酒分类的测试代码
  12. 元器件_封装库_命名规范
  13. 毕设经典-人事档案管理系统(layer+SSM)-AOP介绍
  14. 一只喵的西行记-11 与大叔小萝莉的不打不相识
  15. Bootstarp:网站导航栏的编写设计
  16. Makefile教程(超级详细)
  17. Win7系统设置共享打印机出现0x000006d9错误怎么办?
  18. C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项
  19. (11)桌面日历——日程管理和任务清单
  20. Jira查询bug中的reopen情况

热门文章

  1. socket只能连接本地mysql_MySQL本地用IP登陆而非socket
  2. android应用案例开发大全_vue.js入门及经典应用案例总结(前端开发必看)
  3. 鸿蒙os2.0公测结束了,鸿蒙OS2.0系统公测版发布时间-鸿蒙OS2.0系统公测版适配机型推荐...
  4. 计算机系统安全风险管理,信息系统安全风险及其控制措施.doc
  5. c语言运行时更入下一行,C语言高级语言程序设计(一)_第二章 C程序设计基础(二).ppt...
  6. java解析url字符串,将字符串解析为URL
  7. python下载器2
  8. webService学习3:客户端生成webservice代码
  9. JVM插桩之一:JVM字节码增强技术介绍及入门示例
  10. sqlmap的使用----进阶