09 2010 档案
摘要:XmlDatasetConvert该类提供了四种方法: 1、将xml对象内容字符串转换为DataSet 2、将xml文件转换为DataSet 3、将DataSet转换为xml对象字符串 4、将DataSet转换为xml文件 usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Data;usingSyste...
阅读全文
摘要:1、ADO.NET相关对象一句话介绍1)DataAdapter:DataAdapter实际是一个SQL语句集合,因为对Database的操作最终需要归结到SQL语句。2)Dataset:DataSet可以理解成若干DataTable的集合,DataSet在内存里面维护一个表集合包括表间关系。对于.NET Framework 2.0之前的版本,DataSet在ADO.NET中拥有至关重要的作用,但在...
阅读全文
摘要:DataSet :表示数据在内存中的缓存。 命名空间: System.Data 程序集: System.Data(在 System.Data.dll 中) DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet 由一组 DataTable 对象组成,您可使这些对象与 DataRelation 对象互相关联。您还可通过使用 UniqueCon...
阅读全文
摘要:今天用到一个功能:就是把从数据库读出来的内容转换成XML字符串流格式,并输出给一个功能函数。在写的过程,为方便以后的使用,我对这一功能进行分装。该类的具体格式如下:XmlConvert类命名空间:Nimeux.XmlConvertXmlToData子类函数:1、public static DataSet CXmlToDataSet(string xmlStr)将xml字符串转换成DataSet2、...
阅读全文
摘要:DataGrid,DataList,Repeater是我们最常使用的表格化数据显示控件。在它们之间你是不是曾经不知道该怎么选择呢?怎样才能选择到最适合的控件呢?看了以下的内容你大概就会明白了. 这三个控件大家肯定都非常的熟悉了,我们直接看看它们该在什么场合使用,有什么区别吧。如果你想要快速、简单的开发:选择DataGrid 如果你想要轻量级的、只读的表格化显示:选择Repeater 如果你想要小...
阅读全文
摘要:ASP.NET使用动态编译技术,在运行时动态将同一目录的*.aspx文件先生成*.cs,然后调用CompilerServices将其编译成assemblies(可以到你的%SYSTEMROOT%\Microsoft.NET\Framework\V1.x.xxxx\Temporary ASP.NET Files下面看看)。因此了解ASP.NET编译的过程是优化ASP.NET运行效率的关键之一。以常用...
阅读全文
摘要:1. Get(即使用QueryString显式传递) 方式:在url后面跟参数。 特点:简单、方便。 缺点:字符串长度最长为255个字符;数据泄漏在url中。 适用数据:简单、少量、关键的数据。 适用范围:传递给自己、传递给另一个目标页面;常用于2个页面间传递数据。 用法:例如:url后加?UserID=…,跳转到目标页面,目标页面在伺服端可用Request.QueryString[...
阅读全文
摘要:<a>标签1. <a href=”test.aspx”></a>2. 这是最常见的一种转向方法;HyperLink控件 1. Asp.net 服务器端控件 属性NavigateUrl指定要跳转到的Url地址2. NavigateUrl是可以在服务器端使用代码修改,这个区别于<a>3. 由于HyperLink本身没有事件所以要在...
阅读全文
摘要:一、ObjectDataSource的重要属性: SelectedMethod:获取或设置检索数据的函数或方法的名称 InsertMethod:获取或设置插入数据的函数或方法的名称 UpdateMethod:获取或设置更新数据的函数或方法的名称 DeleteMethod:获取或设置删除数据的函数或方法的名称 TypeName:获取或设置ObjectDataSource对象表示的类的名称,...
阅读全文
摘要:控件生命周期1.初始化(对应Oninit方法)这里页面通过ProcessRequest方法来递归遍历它的子控件(即页面中的空间,其实页面也算控件)。使子控件依次调用它们的Oninit方法。我们这里可以重写控件的OnInit方法,来扩展控件功能或增加初始化内容。在本阶段还要打开视图状态跟踪功能,调用TrackviewState方法,这样存储在viewState对象里面的值在页面回发时才能正确灰复到控...
阅读全文
摘要:在ASP.NET我们在使用Repeater,DetailsView,FormView,GridView等数据绑定模板时,都会使用<%# Eval("字段名") %>或<%# Bind("字段名") %>这样的语法来单向或双向绑定数据。但是我们却很少去了解,在这些语法的背后,ASP.NET究竟都做了哪些事情来方便我们使用这样的语法来绑定数据。究竟解析这样的语法是在编译时,还是...
阅读全文
摘要:前几篇文章我已经对异步的操作进行的详细的解释.异步操作也是线程的一种,当我们开始一个异步操作(新线程),完成调用后需要和其他线程通信(可能需要告知状态信息),这时候我们就需要线程间的通信编程.线程间通信我们看下面的图图1我们来看线程间通信的原理:线程(Thread B)和线程(Thread A)通信, 首先线程A 必须实现同步上下文对象(Synchronization Context), 线程B通...
阅读全文
摘要:异步的Stream读/写操作下面是继承于System.IO.Stream的类System.IO.StreamMicrosoft.JScript.COMCharStreamSystem.IO.BufferedStreamSystem.IO.FileStreamSystem.IO.MemoryStreamSystem.IO.UnmanagedMemoryStreamSystem.Security.Cr...
阅读全文
摘要:异步的核心: IAsyncResultAsynchronous Programming Model 整个异步调用过程中都是围绕IAsyncResult来进行的,大家可以看看上篇文章的例子,BeginXXX 返回这个对象,EndXXX接收这个对象来结束当前异步对象,下面我们来看看IAsyncResult 接口成员/和实现此接口的AsyncResult类成员(其中有些在上篇中已经涉及到)IAsyncR...
阅读全文
摘要:们怎样进行异步编程/开发?现在扩充下上篇文章的类(AsyncTest),提供更多的例子并从中做下简单的对比, 从新的认识下异步的内部机制,下面我们增加一个新的委托1步,我们添加一个新方法(计算年薪YearlySalary)public decimal YearlySalary(decimal salary, int monthCount, decimal bonus);2步,为这个方法增加异步的功...
阅读全文
摘要:在阅读下面知识前,我已经认为你已经具有c#的基础,包括简单的委托知识; 代码使用VS2008开发,但是会在.Net Framework 2.0(C Sharp)编写什么是.Net异步机制呢? 在解释这个话题前,我们先看看同步的程序,就是我们常用的Hello World 程序。Code 1:[代码]图1 我们可以从图1看出,我们平常写的Hello 程序是同一个线程的,而且不是线程池理的线程程序。...
阅读全文
摘要:一、事件的本质事件是软件系统里的两个子系统之间,或者两个模块之间,或者两个对象之间发送消息,并处理消息的过程。在面向对象的世界里,就可以统一认为是两个对象之间的行为。两个对象之间发送的这种消息,对发送方来讲是产生一个事件,对接受方来讲是需要处理某个事件。这种消息可以是用户操作产生的或者软件系统里的某个对象产生的。对象之间的事件处理 从上图可见,对象一产生一个事件,这个事件发生以后需要对象二执行某种...
阅读全文
摘要:可能有所经验的老鸟都知道,反射有两种用法:使用TypeDescriptor(包括PropertyDescriptor等)或者Type(包括PropertyInfo等MemberInfo)。但是我相信绝大多数童鞋们都很疑惑,微软为什么要整出两种反射呢?也不是是很清楚,这两种反射的区别在哪,在什么情况下应该用哪种反射,它们各自的性能如何? 其实玄机就在它们的namespace里,Type家族的na...
阅读全文
摘要:首先简单介绍下Page类。 在.NET Framework中,Page类提供了ASP.NET应用程序从.aspx文件开始创建的所有对象的基本行为。Page类在System.Web.UI命名空间中定义,它派生于TemplateControl类并实现了IHttpHandler接口。TemplateControl类是一个抽象类,它为 Page 类和 UserControl 类提供通用属性和方法。 由...
阅读全文
摘要:这里主要谈谈Application类中的事件 由前一篇文章可以知道,一旦出现了HttpContext类的一个实例,HttpRuntime类就会建立一个ASP.NET应用程序对象来完成该请求。一个应用程序包括HttpApplication类的一个实例。HttpApplication是一个global.asax派生的对象,处理所有被传递给某个虚文件夹得Http请求。一个正在运行的ASP.NET运行程序...
阅读全文
摘要:其实对这方面一直掌握的不够熟练,属于半桶水那种类型—一知半解,所以这次重新这阅读了《asp.net 2.0技术内幕》对这块知识又有了新的认识。 在基于IIS的Web服务器上可以访问的所有资源按文件扩展名进行分组。然后把任何一个输入的请求分配给特定的运行时模块处理。ISAPI(Internet Server Application Programming Interface)扩展在 I...
阅读全文
摘要:APM的轮询聚焦技巧 就从字面意思来理解,每隔一段时间来查询,异步操作的结果。而怎么实现轮询的方法了,这里就要谈到IAsyncResult接口。它定义了若干个只读属性[代码]其中最常用的属性是AsyncState。使用轮询聚集技巧时,要使用AsyncWaitHandle和IsCompleted属性。而对于CompletedSynchronously属性,有时侯供实现BeginXxx和EndXxx...
阅读全文
摘要:当然笔者认为触及这方面知识就就必须对委托很了解,这方面编程会用到委托,同时还要清楚C#为委托提供的语法便利,笔者发现异步操作和委托真是“绝配”了。笔者个人认为异步编程也会是将来的趋势,因为异步的程序(不能说绝对,但是大多数)效率还是比较高的。我们同时也在享受异步操作带来的优势,WEB服务器环境就是一个异步环境,每一个请求都是独立的线程。很难想象只能同步处理一个请求的WEB服...
阅读全文
摘要:笔者想说说这里为什么谈异步操作。其实这里跟笔者大学学到的系统结构相似,笔者还记得老师要笔者经常做的习题,就是许多外部设备并行工作,具体流程是这样的:设备1向CPU发出数据传送请求,CPU处理请求,下达命令,并发生中断,设备1通过通道或DMA方式进行管理数据的传送,然后是设备2向CPU发出数据请求,CPU处理请求,下达命令,......设备1向CPU发出数据传送完毕请求,CPU作出相应的处理(主要是...
阅读全文
摘要:可能大家进来会喷笔者,这么基础的知识还放在首页。那么笔者就要问问大家了,你可能熟悉其中部分数据库读取的形式,但是熟悉全部的估计很少,或者你完全忘记了,因为这些形式被封装到你自己框架的底层,自己搞过一两次就在也没有动手写过了。但是笔者觉得这部分知识是应该牢固掌握的,这个是基础。好如果是已经掌握的大侠,看看笔者写的内容,提出点建议或者补充笔者的内容。 好了废话不多说看 第一种 通过直接在cs文...
阅读全文
摘要:多线程部分多线程在4.0中被简化了很多,仅仅只需要用到System.Threading.Tasks.::.Task类,下面就来详细介绍下Task类的使用。一、简单使用开启一个线程,执行循环方法,返回结果。开始线程为Start(),等待线程结束为Wait()。Code /// <summary> /// Task简单使用 /// </summary> private v...
阅读全文
摘要:并行计算部分 沿用微软的写法,System.Threading.Tasks.::.Parallel类,提供对并行循环和区域的支持。 我们会用到的方法有For,ForEach,Invoke。一、简单使用 首先我们初始化一个List用于循环,这里我们循环10次。(后面的代码都会按这个标准进行循环)Code Program.Data = new List<int>(); for (int ...
阅读全文
摘要:前言:ADO.NET概述 在学习DataTable知识之前,我们有必要了解下ADO.NET。以下摘自MSDN:ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。ADO.NET 通过数据处理将数据访问分解...
阅读全文
摘要:概述HttpHandler是一个HTTP请求的真正处理中心,也正是在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。IHttpHandler是什么IHttpHandler定义了如果要实现一个HTTP请求的处理所必需实现的一些系统约定。HttpHandle...
阅读全文
摘要:概述从前面的章节我们知道HTTP Handler提供了类似于ISAPI Server Extention的功能,而HttpModule实现了类似于ISAPI Filter的功能。使用自定义的Handler会覆盖系统默认的Handler,而Module是可以多个同时存在的。HttpHandler与HttpModule简单来说其实都是对一个请求上下文的处理,但它们两个所处的功能角色是完全不一样的。我暂...
阅读全文
摘要:HttpModuleHttpModule是如何工作的当一个HTTP请求到达HttpModule时,整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理,也就是说此时对于HTTP请求来讲,HttpModule是一个HTTP请求的“必经之路”,所以可以在这个HTTP请求传递到真正的请求处理中心(HttpHandler)之前附加一些需要的信息在这个HTT...
阅读全文
摘要:HTTP运行期HTTP运行期处理客户端应用程序(例如Web浏览器)进入的一个Web请求,通过处理它的应用程序的适当组件路由请求,然后产生响应并发回提出请求的客户端应用程序。进入的HTTP Web请求最先由IIS Web服务器接收到,它在此请求基于ASP.NET已注册处理的扩展名传送到ASP.NET ISAPI上。HTTP运行期首先创建一个HttpContext对象的实例,它包含了当前正在处理的请求...
阅读全文
摘要:在我们实际的应用项目开发中,文件的上传和下载都是是必不可少的,可以说是随处可见。对于DotNet下的文件上传已经是一件再简单不过的事情了,.NET提供了强大的类库System.IO 来实现IO的所有操作。对于文件的下载也是非常简单的事情,下面我将总结一些我的实际经验,希望能给初学者们一点帮助。首先是文件的上传,文件上传必须要保证ASP.NET用户对你所要操作的服务器端文件夹有写的权限,这样剩下的事...
阅读全文
摘要:在这个系列的上篇中介绍了数据绑定语法的原理以及.NET中如何实现单向绑定,中篇我们简单的介绍了ASP.NET 2.0 中新增的Bind语法配合DataSourceControl来实现数据的自动双向绑定。这两部分的内容相对动态抽象并且不常接触,没有很好的源代码支持很难解释清楚,要想真正弄清它们的内部原理,还需要大家亲自动手去反编译分析动态编译的程序集。在了解了数据绑定语法的原理后,我还想来谈谈我中实...
阅读全文
摘要:在上一篇《深入ASP.NET数据绑定(上)》中,我们分析了在.NET中的数据绑定语法的一些内部机理。简单说来就是ASP.NET在运行时为我们完成了页面的动态编译,并解析页面的各种服务器端代码,包括数据绑定语法。而数据绑定的语法虽是一些<%# %>代码块,在生成的代码中,仍然使用了服务器端控件以及在DataBinding事件调用DataBinder.Eval方法来完成数据的绑定工作。所有...
阅读全文
摘要:在ASP.NET我们在使用Repeater,DetailsView,FormView,GridView等数据绑定模板时,都会使用<%# Eval("字段名") %>或<%# Bind("字段名") %>这样的语法来单向或双向绑定数据。但是我们却很少去了解,在这些语法的背后,ASP.NET究竟都做了哪些事情来方便我们使用这样的语法来绑定数据。究竟解析这样的语法是在编译时,还是...
阅读全文
摘要:ASP.NET缓存解决方案和最佳实践1、概述在ASP.NET应用程序构建过程中,为了提高应用程序的性能,缓存处理无疑是一个非常重要的环节。通常,我们将一些频繁被访问的数据,以及一些需要大量处理时间得出来的数据缓存在内存中,从而提高性能。例如,如果程序需要处理一张报表,这张报表的数据是关联的几张数据库表,并通过大量的计算得到的数据。我们知道表关联是比较耗时的,如果关联之后得出的数据再进行聚合排序等操...
阅读全文
摘要:关于页面传值的方法,引发了很多讨论。看来有很多人关注这个,我就我个人观点做了些总结,希望对大家有所帮助。1. 使用QueryString变量QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:a.aspx的C#代码privat...
阅读全文
摘要:Asp.net页面之间传递参数的几种方法 1、第一种方法: 通过URL链接地址传递 send.aspx: protected void Button1_Click(object sender, EventArgs e) { Request.Redirect("Default2.aspx?username=honge"); } receive.aspx: string usernam...
阅读全文
摘要:ASP.Net 自带的缓存机制对于提高页面性能有至关重要的作用,另一方面,缓存的使用也会造成信息更新的延迟。如何快速更新缓存数据,有时成了困扰程序员的难题。根据我的使用经验,总结了下面几种方法,概括了常见的几种情况,如有更好的方法欢迎补充。(1)Cache 对象缓存Cache 对象提供代码级的缓存,功能强大,可操作性强。更新这种缓存的方法很简单,只要调用 Cache.Remove(key) 方法就...
阅读全文
摘要:1 SQL事务 sql事务是使用SQL server自身的事务:在存储过程中直接使用Begin Tran,Rollback Tran,Commit Tran实现事务:优点:执行效率最佳限制:事务上下文仅在数据库中调用,难以实现复杂的业务逻辑。Demo:(所有demo,都以SQL Server自带的Northwind数据的表Region为例) 带事务的储存过程:CREATE PROCEDURE db...
阅读全文
摘要:当应用程序需要在多个数据库中进行事务性操作的时候,使用TransactionScope类可以方便地实现应用程序的这一需求。只要对多个数据库的操作代码位于同一个事务范围内,即可实现多数据库连接的事务操作。技术要点本示例主要说明了如何在程序中使用TransactionScope实现多数据库连接事务操作,技术要点如下。— 因为位于同一个事务范围内的不同的数据库操作,程序视为同一个事务,所以使...
阅读全文
摘要:当应用程序需要在多个数据库中进行事务性操作的时候,使用TransactionScope类可以方便地实现应用程序的这一需求。只要对多个数据库的操作代码位于同一个事务范围内,即可实现多数据库连接的事务操作。技术要点本示例主要说明了如何在程序中使用TransactionScope实现多数据库连接事务操作,技术要点如下。— 因为位于同一个事务范围内的不同的数据库操作,程序视为同一个事务,所以使...
阅读全文
摘要:TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事物。使用之前必须添加对 System.Transactions.dll 的引用。 下列代码就是一个正在创建的事务,这个事务自身还封装了多个数据库查询。只要任意一个 SqlCommand 对象引发...
阅读全文
摘要:存储过程的定义、描述就不多说了,都明白。直接从基本的存储过和开始讲起。 1. 创建存储过程 [代码] 以上,重要的,procedure_name表示存储过程名,注意不要使用sp_开头的名称,因为容易与系统存储过程混淆。 @parameter表示参数,可以有多个,data_type,表示参数的类型,另外,支持默认参数,只要在参数后面加上"=defaultvalue"即可。 如果想要输出参数,则需...
阅读全文
摘要:这一节主要介绍使用SQL语言来进行数据库,及表的创建、修改和删除功能。使用SQL语言比使用图形界面会带来更快的效率,另外,学习好T-SQL对于写相应的脚本、存储过程都带来很大的便利。 本节讨论了以下几个方面: 创建和修改数据库,创建和修改表,主键/外键/UNIQUE/CHECK/DEFAULT约束, 创建和修改规则和默认值.1.创建数据库 创建数据库,默认情况下,一条命令就可以了:Create...
阅读全文
摘要:触发器是一种响应特定事件的特殊类型的存储过程。有两种类型的触发器:数据定义语言(DDL)和数据操作语言(DML)触发器。 DDL能够响应某种方式(Create,ALter,Drop)修改数据库结构时激发; DML是附加在特定表和视图上的代码。程序不能显式调用触发器,触发器代码是某种事件产生后被自动执行。DDL是SQL Server2005新增的功能。 使用触发器能够满足数据库操作的一些高级功能...
阅读全文
摘要:1. 子查询 子查询是嵌套在其它查询中常规的SQL查询,当需要一个Select语句作为数据部分的基础或另一个查询中的条件的要素时,就是创建子查询 子查询经常满足下列几种需求: a. 把一个查询分解成一系列的逻辑步骤 b. 提供一个列表作为where子句和[IN|EXSITS|ANY|ALL]的目标对象 c. 提供由父查询中每一条记录驱动的查找 值得注意的是:大部分子查询可以用联结来表示,...
阅读全文
摘要:脚本能够将相应的T-SQL命令组织起来,实现一个完整的功能目标。脚本提供了变量、分支、循环等控制语句,可以用来实现一些复杂的任务。通过组织一系列的SQL命令编成脚本和批处理,也减低了数据库管理的复杂性。1. USE语句 没啥好讲的,功能就是设置当前的数据库。2. 声明变量 使用declare关键字,语法非常简单: declare @<变量名> <变量类型> [,@<...
阅读全文
摘要:1. Where子句说明运算符用法示例说明=,>,<,>=,<=,<>, !=,!<,!><列名>=<另一个列名>!=和<>都是不等于的意思,!<与!>表示不小于与不大于的意思AND,OR,NOT<列1>=<列2> and <列3>=<列4>优行级的次序为...
阅读全文
摘要:1. 联接查询JOIN包含了以下几种类型: Inner Join / Outer Join / Full Join / Cross Join 下面具体讨论这几种Join的用法2. 关于数据表 本次讨论的前提是基于以下两张数据表 ●Northwind.Employees EmployeeID LastName FirstName City Country ReportsTo ---------...
阅读全文
摘要:ado.net框架支持两种模式的数据访问: 连接模式(Connected)和非连接模式(disconnected)。这一节介绍如何使用连接模式访问数据库中的数据,利用ADO.NET中的Connection,Command,DataReader来获取和修改数据库中的数据 1. 连接模式的数据访问 连接模式要使用到的三个核心类: ● IDBConnection : 表示数据源的连接,所有Conne...
阅读全文
摘要:在非连接模式下,主要讨论以下对象:DataAdapter。 DataAdpater的作用是在物理存储模式的数据和内存之间进行数据传递。DataTable是用在内存中表示数据库表。DataSet是内存中表示数据库(表、表关系的集合)。DataView是用于在内存中表示数据库视图。 DataAdapter对象在后台使用DataReader对象从数据库中获取数据;DataView对象来对数据进行过滤...
阅读全文
摘要:P1默认数据绑定过程编号事件名称作用E1DataBinding数据绑定之前触发,在这个事件之前(第一次生成GridView),GridView不存在行数据。E2RowCreated当GridView的数据源存在时,产生新的一行E3RowDataBound当GridView的数据源存在时,在调用F2之后,调用自身,为新生成的GridView的一行提供数据绑定。E4DataBound当所有的Row生成...
阅读全文
摘要:Repeater控件和DataList控件,可以用来一次显示一组数据项。比如,可以用它们显示一个数据表中的所有行。 Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式。DataList控件也由模板驱动,和Repeater不同的是,DataList默认输出是HTML表格,DataList将数据源中的记录输出为HTML表格一个个的单元格。1. Repeater控件显示数...
阅读全文
摘要:DataList控件与Repeater控件一样由模板驱动,与Repeater控件不同的是: DataList控件默认输出是一个HTML表格.DataList在输出时已经在相应的模板上套上了表格标签,而Repeater则是模板是什么样,输出就是什么样. 1. DataList显示数据例1:使用DataList显示数据 [代码] 以上的例子,在Repeater控件显示数据时也是使用这样的格式,但是输出...
阅读全文
摘要:数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件。数据绑定 Web 服务器控件是将其他 ASP.NET Web 控件(例如 Label 和 TextBox 控件)组合到单个布局中的复合控件。 例如,诸如 DetailsView 控件等数据绑定控件可绑定到一个结果集,例如,包含每个雇员的姓名、地址、职务等信息的雇员表。在 DetailsVie...
阅读全文
摘要:显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据,例如 GridView 控件。通过使用 GridView 控件,您可以显示、编辑和删除多种不同的数据源(例如数据库、XML 文件和公开数据的业务对象)中的数据。 1. GridView数据绑定基础 GridView大部份场合下都是用来绑定数据源,进行数据的显示。一般情况下,可以绑定到SqlDataSou...
阅读全文
摘要:List控件(如 CheckBoxList、DropDownList、ListBox 和 RadioButtonList 类)继承自ListControl类,不能直接创建 ListControl 抽象类的实例。相反,此类由其他类(如 CheckBoxList、DropDownList、ListBox 和 RadioButtonList 类)继承以提供通用的基本功能。 ListControl 类的...
阅读全文
摘要:显示表格数据是软件开发中的一个周期性任务。ASP.NET 提供了许多工具来在网格中显示表格数据,例如 GridView 控件。通过使用 GridView 控件,您可以显示、编辑和删除多种不同的数据源(例如数据库、XML 文件和公开数据的业务对象)中的数据。 1. GridView数据绑定基础 GridView大部份场合下都是用来绑定数据源,进行数据的显示。一般情况下,可以绑定到SqlDataSou...
阅读全文
摘要:本节讨论如何从现有的控件,进而扩展成强大的,更定制的GridView控件 1.扩展BoundField 默认的BoundField不能显示多文本,文字一多,就会扩大整个Table的Height值,解决这个问题的方法可以通过TemplateField加入Div控件来解决,但是,也可以从BoundField类上进行扩展,加入一点特有的功能,让他能够显示多文本 例1: 创建长文本字段 ===App_co...
阅读全文
摘要:asp.net中GridView绑定到数据源时,可以自动显示数据源的各个字段。只要设定其AutoGenerateColumns为TRUE即可。但这,自动显示有其不好的一面,因为不能自义定控制显示的样式。 解决以上的办法就是指定需要GridView显示的字段,GridView控件支持以下七种类型的Field: ● BoundField : 将数据项显示为文本 ● CheckBoxField :...
阅读全文
摘要:1. GridView控件的事件 GridView有很多事件,事件可以定制控件的外观或者行为。事件分为三类 1.1 GridView显示数据时的事件 ● DataBinding : 在绑定数据源之前触发 [继承自Control] ● DataBound 在绑定到数据源后触发 ● RowCreated 创建每一行时触发 ● RowDataBound : 每一行绑定完数据时触发 MSDN解...
阅读全文
摘要:在以前写个一篇关于ASP.NET页面生命周期的草稿,最近又看了看ASP.NET,做个补充,看看页面初始过程到底是怎么样的下面是ASP.NET页面初始的过程:1. Page_Init();2. Load ViewState;3. Load Postback data;4. Page_Load();5. Handle control events;6. Page_PreRender();7. Page...
阅读全文
摘要:页面框架通过如下过程处理aspx文件请求:1:解析aspx文件,并创建一个控件树;2:使用控件树动态实现一个继承自Page类的类或者控件;3:动态编译类;4:缓存编译类,以备后用;5:动态创建一个编译类的实例。页面开始启动生命期,在这个过程中,页面将通过生命周期的不同阶段;页面经历了如下阶段【其中一些阶段标记为仅仅回传,是说只有在被回传到服务器时,页面才经历这些阶段】:01:页面首先从QueryS...
阅读全文
摘要:一、预初始化,在页初始化开始时引发 System.Web.UI.Page.PreInit 事件。Begin PreInitOnPreInitEnd PreInit二、初始化,引发 System.Web.UI.Control.Init 事件以对页进行初始化。Begin InitOnInitEnd Init三、初始化完成,在页初始化后引发 System.Web.UI.Page.InitComplete...
阅读全文
摘要:上一篇我们用Profile.age等方式可以读取用户的年龄和其它的信息,但有的时候我们要查询显示所有用户的信息,但asp.net没有提供查询所有用户信息的功能,我们只能对现有的用户逐一查询其Profile信息。第一步:设置配置文件第二步:得到所有的用户MembershipUserCollection users = Membership.GetAllUsers();这里用到了Membership类...
阅读全文
摘要:在Membership表中可以存储一些用户的基本信息,但有的时候,我们需要记录的用户信息远远不止Membership表中提供的这些,如QQ、MSN、家庭住址、联系电话等等。那如何把这些用户信息记录到数据库中呢?在asp.net2.0中为我们提供了个性设置的功能――Profile。下面看一下Profile的几个特征:1)Profile根据每个用户存储各自的用户资料,包括匿名称用的资料。2)Profi...
阅读全文
摘要:创建用户:MembershipCreateStatus mc;Membership.CreateUser(txtUid.Text, txtPwd.Text, txtEmail.Text, txtQuestion.Text, txtAnswer.Text, true, out mc);Response.Write(mc.ToString());删除用户:if (Membership.DeleteUs...
阅读全文
摘要:安全管理的解决方案在.net1.1中几乎为一片空白,对于应用程序的验证与授权大部分的工作是开发人员自己编写代码,或者是借助企业库等工具来实现,此可谓.net1.1中的一大缺憾。在.net2.0中微软为我们提供了一系列的API类和控件,大大简化了我们在此方面的工作量。下面我将推出一系列的随笔介绍asp.net2.0的安全系统。Asp.net2.0中提供了一系列的控件实现验证与授权中的各种功能,这些控...
阅读全文
摘要:"验证"与"授权"是对网页资源安全管理的两道门。验证(Authentication):检查用户是否是合法的用户。就像是网站大门口的保卫,服责验证使用的用户名和密码。授权(Authorization):检查用户是否有访问某种资源的权限。例如有的人虽然能过了环保局门口保卫的验证,进入环保局,但他可能是一个普通科员,那他就没有局长职责。验证与授权的底层运作:首先,打开windows操作系统的&ldquo...
阅读全文
摘要:前面主要说了与安全相关的一系列的类,现在我们使用这些类就可以做出我们自己的安全系统了。其实微软的目的远不至于此,下面我们就来看一下微软为我们提供的Login系列控件。Login系列控件是微软为了简化我们的开发过程,为我们进行常规的安全开发提供块捷途径。Login系列控件包含下列控件:Login登录控件LoginName用于显示用户名的控件LoginStatus根据用户的登录状态显示不同的信息(登录...
阅读全文
摘要:一、CSS入门CSS是Cascading Style Sheets(层叠样式表)几个英文单词的缩写。网页设计面临的问题: 1、显示格式设置功能薄弱、设置麻烦。 2、页面显示风格很难达到统一。 3、冗余的格式设定太多。CSS优点: 1、提供了丰富的显示格式设置功能,极大弥补了HTML显示的不足。 2、实现了显示内容与显示格式设置的分离,使显示格式设置实现重用。 3、容易使页面形成统一的风格。 4、提...
阅读全文
摘要:在C#中对XML文件的操作主要用到了XmlDocument类,它可对XML的DOM树进行解析。1、加载现有的XML文件XmlDocument dd = new XmlDocument();dd.Load(Server.MapPath("tt.xml"));2、保存XmlDocument对象到文件dd.Save(Server.MapPath("tt.xml"));3、向XmlDocument对象中加...
阅读全文
摘要:一、基本概念:网页、网站、浏览器、IE/NetScapeHTML:超文本标记语言,什么是超文本、什么是标记语言。HTML的内容怎样显示出来。二、HTML语法:<html></html><head></head><title></title><body></body>三、<body>的一些属性...
阅读全文
摘要:String 对象允许操作和格式化文本字符串以及确定和定位字符串中的子字符串。length 属性 返回字符串的长度。anchor 方法 返回对象中指定文本周围带有HTML定位点(具有 NAME 属性)的字符串。 var strVariable = "This is an anchor"; strVariable = strVariable.anchor("Anchor1"); 最后一个语句后面的 ...
阅读全文
摘要:类和结构类和结构实际上都是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。类是存储在堆(heap)上的引用类型,而结构是存储在堆栈(stack)上的值类型。较小的数据类型使用结构可提高性能。但在语法上,结构与类非常相似,主要的区别是使用关键字struct代替class来声明结构。在大多数情况下,类要比结构常用得多。类:class PhoneCustomer { public co...
阅读全文
摘要:一、命名约定1.常用命名术语说明Pascal命名格式 将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用 Pascal 大小写。例如:BackColorCamel命名格式 标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor2.名称空间命名 创建命名空间的名称时应使用以下原则:“公司名称.技术名称.软件产品代号&rdquo...
阅读全文
摘要:C#把数据类型分为两种值类型 和 引用类型这两种类型存储在内存的不同地方:值类型存储在堆栈中,而引用类型存储在托管堆上。CTS类型C#认可的基本预定义类型并没有内置于语言中,而是内置于.NET Framework中。例如,在C#中声明一个int类型的数据时,声明的实际上是.NET结构System.Int32的一个实例。1. 整型2.浮点类型float f = 12.3F;3. decimal类型d...
阅读全文
摘要:一、SQL编程1、局部变量 在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。 局部变量必须以@ 开头,而且必须先用DECLARE 命令说明后才可使用。 使用SELECT 或SET 命令来设定变量的值 说明形式如下:DECLARE @变量名 变量类型 [ @变量名 变量类型] SELECT @局部变量 = 变量值 SET @局部变量= 变量值 如:declare @name...
阅读全文
摘要:一、SQL Server 2000常见的版本 企业版(Enterprise Edition)标准版(Standard Edition)个人版(Personal Edition)开发者版(Developer Edition)二、SQL Server 系统数据库简介 SQL Server 2000有4个系统数据库 1. Master数据库是SQL Server系统最重要的数据库,它记录了SQL Ser...
阅读全文
摘要:日历运行效果:思路:这个例子的思路总体有两个难点:1、计算任意月份的第一天是星期几,即日历显示时,当前月份对应星期几2、日历窗口的层(<div>、<span>)的构造,及其相应的事件(点击日期号填写当前的日期,点击年份选择年份,点击月份选择月份)。在解决第一个问题时:我们选确定好1900-1-1是星期一,然后累计计算任意年份月份的第一天是第几天,然后模7,得出的结果就是当前...
阅读全文
摘要:2008年07月02日 星期三 17:50新闻幻灯片效果门户网站的新闻幻灯片效果是很常见的,它通常每隔一定的时间切换一次新闻图片与新闻文本的显示,其中大部分是以Flash制作的。但我们可以用JavaScript和XML文件结合起来实现这种效果。运行效果:实现思路:用JavaScript和XML文件结合起来取出要轮转的幻灯片的信息,然后用setTime()函数使其每隔一段时间就调用函数一次,切换幻灯...
阅读全文
摘要:属性页效果图思路:用span标签制作页标题,用div标签制作内容页面,通过span标签的click事件来控制相应div的显示与隐藏。HTML代码:<style type="text/css"> /*标题标签及间隔标签的样式*/ span{ display:inline-block; font-size:12px;} /*标题标签的样式*/ .tab{ background-image:...
阅读全文
摘要:2008年07月02日 星期三 13:06树型目录放大镜效果:思路:利用DotNet中的树型控件和Javascript,对具有复杂结构的输入内容简化输入。Web.SiteMap文件:在web.sitemap文件中,每一个siteMapNode属性代表树的节点指向的目标网页的地址,但在这里面我们不想在点击树的节点的时候转向其它页面,而是要把选中节点的内容填写到文本框中,所以我们把每一个siteMap...
阅读全文
摘要:初始知识:JavaScript操作XMLDOM对象//两种方式创建XML对象var doc = new ActiveXObject("Msxml2.DOMDocument"); var doc = new ActiveXObject("Microsoft.XMLDOM");//ie5.5+//加载文档//doc.load("b.xml");//将XML文档设为同步方式,默认是异步方式doc.asy...
阅读全文
摘要:这两个概念是DotNet程序员经常见到的,但好多人搞不清它们。虽然MSDN对它们有相关的说明,但并不是那么容易看懂。在这里灰灰虫根据自己的理解用简单易懂的语言解绍一下它们。程序集(assembly) “程序集是包含编译好的、面向.NET Framework的代码的逻辑单元” 这句话可以理解如下: 首先:程序集是代码的逻辑单元,是逻辑上的概念。它不完全等价于编译好的DLL物理...
阅读全文
摘要:集合在编程的过程中用的是非常的多,如GridViewRowCollection、ConnectionStringSettingsCollection、NameValueCollection等等。一般来说,集合的类都包含在System.Collections命名空间中。那众多集合之间又有什么样的联系呢?这需要我们从集合的集成关系上理顺一下。一、IEnumerable和IEnumerator接口 IE...
阅读全文
摘要:2008年07月21日 星期一 15:36DataList是另一种显示数据控件,它与GridView不同的是,它全部使用模板进行设计,并且DataList的模板是对整行设置,而不是像GridView那样只对某一列进行模板设计。正是由于它使用模板进行设计,所以它的灵活性比GridView更高,但事情总是有两面性的,灵活度提高了,必然带来使用上的复杂。因此DataList在易用性上真的不如GridVi...
阅读全文
摘要:如何将siteMap/XML格式的导航文件中的内容显示在导航控件中,是这篇文章的主要内容。这里面的工作并不难,只要按照下面的步骤实现就可以一、实现导航控件与siteMap文件的协同操作1、创建siteMap文件//web.sitemap文件的内容<?xml version="1.0" encoding="utf-8" ?><siteMap xmlns="http://schema...
阅读全文
摘要:网站的导航功能是给浏览该网站的用户起一个指示的作用,让用户能清楚了解自己当前处于网站的哪一层,并能快速在各层不同模块间进行切换。过去我们做网站时需要手动地为每一个页面实现导航功能,这样做起来工作量太庞大,可维护性差,而且很容量出错。在Asp.Net2.0中为我们提供了三个常用的导航控件: TreeView控件 Menu控件 SiteMapPath控件 导航控件的优点在于: 1、提供可视化的操作界面...
阅读全文
摘要:ADO.NET(三)DataSet与SqlDataAdapter对象是微软在ADO.NET中推出的新一代的数据访问方式,有些情况下非常适合使用 DataSet,例如在设计原型、开发小型系统和支持实用程序时。但是,在企业系统中使用 DataSet 可能并不是最佳的解决方案,因为对企业系统来说,易于维护要比投入市场的时间更重要。因此在这里我们探讨 DataSet 的一种替代解决方案,即:自定义实体与集...
阅读全文
摘要:2008年07月13日 星期日 21:45内存中的数据库--DataSet类DataSet类是数据的脱机容器。数据集由一组数据表组成,每个表都有一些数据列和数据行DataSet对象中包含:数据表和数据关系实例化DataSet:DataSet ds = new DataSet(); //这只是生成了一个空的数据集,里面不包含任何表。DataSet属性:Tables:(DataTableCollect...
阅读全文
摘要:ADO.NET结构命名空间(车延禄)System.Data—— 所有的一般数据访问类System.Data.Common—— 各个数据提供程序共享(或重写)的类System.Data.Odbc—— ODBC提供程序的类System.Data.OleDb—— OLE DB提供程序的类System.Data...
阅读全文
摘要:P1默认数据绑定过程编号事件名称作用E1DataBinding数据绑定之前触发,在这个事件之前(第一次生成GridView),GridView不存在行数据。E2RowCreated当GridView的数据源存在时,产生新的一行E3RowDataBound当GridView的数据源存在时,在调用F2之后,调用自身,为新生成的GridView的一行提供数据绑定。E4DataBound当所有的Row生成...
阅读全文
摘要:RowCommand 在 GridView 控件中单击某个按钮时发生。此事件通常用于在该控件中单击某个按钮时执行某项任务。PageIndexChanging 在单击页导航按钮时发生,但在 GridView 控件执行分页操作之前。此事件通常用于取消分页操作。PageIndexChanged 在单击页导航按钮时发生,但在 GridView 控件执行分页操作之后。此事件通常用于在用户定位到该控件中不同的...
阅读全文
摘要:三、命令列的使用 命令列主要提供了GridView中常用的一些修改、更新、删除的操作,在GridView与DataSource控件结合使用的情况下,我们并不需要为些编写太多的代码就可以实现简单的维护操作,如果在复杂的情况下(如一对多链接查询时),我们仍需要编写代码来实现更新与删除。(车延禄) 使用命令列有两种方式: 1.在“可选列”中添加相应的CommandField列的子...
阅读全文
摘要:从.NET Framework2.0开始,VS2005集成开发环境中就为开发人员提供了三个导航控件:树状目录(TreeView)、菜单(Menu)和导航条(SiteMapPath)。这三个控件可通过Items属性添加节点元素,也可以通过SiteMapDataSource控件与站点地图文件进行绑定显示页面导航。但好多开发人员并不喜欢使用它们,原因是--“这三个控件看似使用简单,但不能满足...
阅读全文
摘要:五、分页在GridView中,分页一般有两种方式:一种是利用GridView自身带有的分页功能与DataSource控件配合使用实现分页。这种分页方式几乎不用编写代码,实现简单,但它是把所有数据读取到内存中进行分页,对于大数据量的操作销耗内存较大,即使使用缓存技术,其性能也是很低;并且这种分页的导航与GridView集成在一起,导般模式太单调。另一种分页方式就是使用子查询或LInQ实现自定义分页,...
阅读全文
摘要:在VS2008中新增了两个非常好用的两个数据控件:ListView和DataPager。使用这两个控件可以很灵活地实现数据的显示、分组、分页、排序、编辑、插入、删除等功能。在VS2008之前,要显示集合型数据,我们一般会采用Repeater、DataList或GridView等控件来实现。GridView为我们提供了强大的数据显示功能,但是它把界面限制在一个标准的行列Table表格中,比如难以实现...
阅读全文
摘要:GridView是ASP.NET界面开发中的一个重要的控件,对GridView使用的熟练程度直接影响软件开发的进度及功能的实现。(车延禄)GridView的主要新特性: 1.与DataSource控件结合实现了显示与数据操作的分离,大大减化了代码的编写量; 2.实现"双向绑定",无需手动检索数据。 2.在列的类型上新增了CheckBoxField和ImageField两个类型列; 3.对排序和分页...
阅读全文
摘要:partial class Form1 : Form { private ArrayList dbRecordsHolder; public Form1() { InitializeComponent(); dbRecordsHolder = new ArrayList(); } private void btnPopulate_Click(object sender, EventArgs e) ...
阅读全文
摘要:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS 实现 begin transdeclare @orderDetailsError int,@procuntError intdelete from [order details] where productid=42select @orderDetailsError =...
阅读全文
摘要:1、SqlServer存储过程 的事务处理方法一:--测试的表 create table tb( id int not null constraint PK_sys_zj_fielddict primary key ,aa int) --事务处理 begin tran insert into tb values(1,1) if @@error<>...
阅读全文
摘要:三种事务处理事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下3种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRANS 实现begin transdeclare @orderDetailsError int,@procuntError intdelete from [order details] wh...
阅读全文
摘要:// 注意,在Visual Studio2005平台下,如果使用GridView导出文件,//就必须重载VerifyRenderingInServerForm方法public override void VerifyRenderingInServerForm(Control control){}/// <summary>///导出到文件的方法,/// </summary>/...
阅读全文
摘要:public bool Insert_Week_Plan_Chan(DataTable data, DataTable dtWeekPlan,string classicYearID,string year,string ChannelID) { bool state = false; SqlConnection conn = new SqlConnection(DBBase.strconn); ...
阅读全文
摘要:可以使用 Connection 和 Transaction 对象启动、提交和回滚事务。下面的步骤用于执行事务。若要执行事务,请执行下列操作:1.调用 Connection 对象的 BeginTransaction 方法来标记事务的开始。BeginTransaction 方法返回对 Transaction 的引用。该引用将分配给登记在事务中的 Command 对象。 2.将 Transaction ...
阅读全文
摘要:另一个走向极端的错误 满怀信心的新手们可能为自己所掌握的部分知识陶醉不已,刚接触数据库库事务处理的准开发者们也一样,踌躇满志地准备将事务机制应用到他的数据处理程序的每一个模块每一条语句中去。的确,事务机制看起来是如此的诱人——简洁、美妙而又实用,我当然想用它来避免一切可能出现的错误——我甚至想用事务把我的数据操作从头到尾包裹起来。看着吧,下面我要从创...
阅读全文
摘要:什么是数据库事务 数据库事务是指作为单个逻辑工作单元执行的一系列操作。设想网上购物的一次交易,其付款过程至少包括以下几步数据库操作: · 更新客户所购商品的库存信息 · 保存客户付款信息--可能包括与银行系统的交互 · 生成订单并且保存到数据库中 · 更新用户相关信息,例如购物数量等等 正常的情况下,这些操作将顺利进行,最终交...
阅读全文
摘要:在.net2.0中,实现对gridview删除行时弹出确认对话框的四种方法 1,GridView中如何使用CommandField删除时,弹出确认框? 在VS2005提供的GridView中我们可以直接添加一个CommandField删除列:<asp:CommandField ShowDeleteButton="True" />,完后在它的RowDeleting事件中完成删除。但在多半...
阅读全文
摘要:要在页脚显示如总页数的信息,你可以用<PagerTemplate>项,如下例所示:<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="ID" AllowPaging="true" PageSize="10" AutoGenerateColumns=...
阅读全文
摘要:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.We...
阅读全文
摘要:<asp:GridView ID="GridView2" runat="server" AllowPaging="True"> <PagerTemplate> <div id="main"> <table> <tr> <td style="text-align:left;"> <div id="i...
阅读全文
摘要:1. 为什么不使用GridView的默认分页功能首先要说说为什么不用GridView的默认的分页功能,GridView控件并非真正知道如何获得一个新页面,它只是请求绑定的数据源控件返回适合规定页面的行,分页最终是由数据源控件完成。当我们使用SqlDataSource或使用以上的代码处理分页时。每次这个页面被请求或者回发时,所有和这个SELECT语句匹配的记录都被读取并存储到一个内部的DataSet...
阅读全文
摘要:6.鼠标移到GridView某一行时改变该行的背景色方法一:效果图:做法:双击GridView的OnRowDataBound事件;在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示:protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { int i; //执行循...
阅读全文
摘要:protected void gvdegreetype_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onmouseover", "this.style.backgroundColor='Gh...
阅读全文
摘要:在GridView中我们经常要利用复选按钮实现全选的功能,下面针对这一解决方案做以总结第一种:利用客户端控件实现 JS: 复制代码 代码如下:<script type="text/javascript"> function checkAll() { var checklist=document.getElementsByTagName("input"); //传入当前对象即GridVi...
阅读全文
摘要:说明:GridView的数据绑定需要在!ispostback里头,否则在编辑的时候会出现不能获取编辑后的值的情况一.GridView主键的设置:GridView1.DataKeyNames = new string[] { "Jinchu_Time" }; GridView1.DataBind();二.GridView分页事件的处理方法:protected void GridView1_PageI...
阅读全文
摘要:SelectedItem属性 设置或获取下拉菜单的选中项,该属性的类型为System.Web.UI.WebControls.ListItem.所有列表控件(ListControl)中的项都是该类型,它常用的两个属性是Text和Value,Value用于设置或获取项的值,text用于调协或获取显示的文本SelectedValue属性 获取选择项的值,与selectedItem.value一致Date...
阅读全文
摘要:在VS2005提供的GridView中我们可以直接添加一个CommandField删除列:<asp:CommandField ShowDeleteButton="True" />,然后在GridView的OnRowDeleting事件中完成删除。但一般情况下我们在做这种删除操作时都需要先让用户确认一下,然后后再删除记录,以避免误操作引起的误删除。那我们可以通过下面方法给GridView...
阅读全文
摘要:在我们做WEB开发的过程中,经常会遇到GridView中的某些字段太长了,如果全部显示出来就会使排版混,影响美观,尤其是在我们做新闻系统时肯定会遇到,比如显示新闻列表的gridview,页面的版面已设计美观,但是有的新闻标题过长,我们希望只显示一定长度,后面加省略号,然后当鼠标移上去时再显示标题的全部内容,这样就即做到了不影响版面的布局,又做到了标题内容的全部显示. 下图是我做的规则显示的效果图,...
阅读全文
摘要:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.We...
阅读全文
摘要:1.用DataSet + SqlDataAdapter读取数据 public static DataSet GetDateSet(string sql) { try { sqlconn = new SqlConnection(configstring); SqlDataAdapter sqldrp = new SqlDataAdapter(sql, sqlconn); DataSet ds = n...
阅读全文
摘要:ASP.NET执行存储过程一. 执行一个没有参数的存储过程的代码如下:connectionString为连接字符串SqlConnection conn=new SqlConnection(connectionString); SqlDataAdapter da = new SqlDataAdapter();da.SelectCommand = new SqlCommand();da.SelectC...
阅读全文
摘要:ASP.NET调用存储过程的方法的介绍呢,我们为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的“官方”方法。另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后不再一一说明。本文所有例子均采用C#语言。 要在应用程序中访问数据库,一般性的步骤是:首先声明一个数据库连接SqlConnection,然后声明一个数据库命令SqlComma...
阅读全文
摘要:protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { bind("F_UserID,F_NickName,F_PubDate", AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, ""); } }public void bind(string Fi...
阅读全文
摘要:set ANSI_NULLS OFFset QUOTED_IDENTIFIER OFFGOALTER Proc [dbo].[p_query] @Source nvarchar(4000), @Size int=10, @Index int=1, @List nvarchar (1000)='',@Order nvarchar (1000)='', @Count int =0 OUTPUTasse...
阅读全文
摘要:public class DBHelper { private static string connstring = ConfigurationManager.ConnectionStrings["DBConnection"].ToString(); /// <summary> /// 使用using执行增,删、改 /// </summary> /// <return...
阅读全文
摘要:Eval()方法在运行时使用反射执行后期绑定计算,因此与标准的ASP.NET数据绑定方法bind相比,会导致性能明显下降。它一般用在绑定时需要格式化字符串的情况下。多数情况尽量少用此方法 Eval 方法是静态(只读)方法,该方法采用数据字段的值作为参数并将其作为字符串返回。Bind 方法支持读/写功能,可以检索数据绑定控件的值并将任何更改提交回数据库。 使用 Eval 方法 Eval 方法可计算数...
阅读全文
摘要:1.简单描述Eval和Bind的区别绑定表达式 <%# Eval("字段名") %> <%# Bind("字段名") %>区别 1.eval是只读数据,bind是可更新的. 2.当对次表达式操作时候,必须用Eval 如<%# Eval("字段名").ToString().Trim() %> 2.若GridView中绑定列里面 设置 内容格式 DataFormat...
阅读全文
摘要:SQLhelperusingSystem;usingSystem.Data;usingSystem.Xml;usingSystem.Data.SqlClient;usingSystem.Collections;///<summary>///SqlServer数据访问帮助类///</summary>publicsealedclassSqlHelper{#region私有构造函...
阅读全文
摘要:using System.Data; using System.Data.Common; using System.Configuration; public class DbHelper { private static string dbProviderName = ConfigurationManager.AppSettings["DbHelperProvider"]; private s...
阅读全文
摘要:using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{ public static class DBHelper { private static Sq...
阅读全文
摘要:首先,打开你的查询分析器。。运行下列SQL代码。CREATE PROCEDURE dbo.oa_selectalluser AS select * from zz_Stock_Barcode 这个表可以改成对应的测试表,下面的也一样GOCREATE PROCEDURE dbo.oa_SelectByID @id intAS select * from zz_Stock_Barcode where ...
阅读全文
摘要:首先,打开你的查询分析器。。运行下列SQL代码。CREATE PROCEDURE dbo.oa_selectalluser AS select * from zz_Stock_Barcode 这个表可以改成对应的测试表,下面的也一样GOCREATE PROCEDURE dbo.oa_SelectByID @id intAS select * from zz_Stock_Barcode where ...
阅读全文
摘要:ASP.NET页面之间传递值的几种方法... 一.使用QueryString Request.QueryString 在ASP时代,这个是较常用的方法,到了ASP.NET,仿佛用的己未几了,但是不论怎样道,这是一个出有过期,且很值得推举的方法,由于不论是ASP还是ASP.NET,最基础的皆仍是基于HTTp协定的。 缺点长短常显明的,让在多个页面传递时,能够就Request不到了 使用QuerySt...
阅读全文
摘要:第一种DAL层 public static void AddUserMessage(string name,string pwd) { try { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into My_UserMessage("); strSql.Append("uname,password)"); st...
阅读全文
摘要:以用3种不同的方式处理异步命令。一种方式是启动异步进程,再选择 IAsyncResult对象,看看进程何时完成。第二种方式是在开始异步进程时提供一个回调方法。这种方式可以并行执行其他任务。异步进程完成时,就触发回调方法进行清理,并通知程序的其他部分该异步进程已完成。第三种也是最好的方法就是把一个等待句柄关联到异步进程上,使用这种方式,可以启动需要的所有异步进程,等待全部或部分进程的完成,以便对它们...
阅读全文
摘要:一、什么时候使用多线程 对于需要等待的操作如:文件操作、从网络加载信息等,此时可以使用一个线程进行这些操作,新开一个线程运行其他的操作,提高效率增加用户体验。典型的例子是word程序中的拼写检查器:一个线程等待用户输入,另一个线程进行后台搜索、第三个线程将写入的数据存储在临时文件中、第四个线程进行从internet上下载相关信息。二、c#使用线程的最简单方法——异步委托C#...
阅读全文
摘要:整个异步调用过程中都是围绕IAsyncResult来进行的,,BeginXXX返回这个对象,EndXXX接收这个对象来结束当前异步对象[代码][代码]ar.AsyncWaitHandle.WaitOne()//阻碍当前线程,直到异步调用结束.[代码]
阅读全文
摘要:在 使用BackgroundWorker组件 一文中,阐述了在Winform编程中,使用BackgroundWorker组件实现异步调用,本文主要讲述利用委托实现异步。以下描述摘抄于MSDN:异步委托提供以异步方式调用同步方法的能力。当同步调用委托时,Invoke()方法直接对当前线程调用目标方法;当异步调用委托时,CLR将对请求进行排队并立即返回到调用方,将对来自线程池的线程调用该目标方法,提交...
阅读全文
摘要:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;u...
阅读全文
摘要:同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作异步编程概览.NET Framework 允许您异步调用任何方法。定义与您需要调用的方法具有相同签名的委托;公共语言运行库将自动为该委托定义具有适当签名的 BeginInvoke 和 EndInvoke 方法。BeginInvoke 方法用于启动异步调用。它与...
阅读全文
摘要:趁着对委托的熟悉,我们就弄清楚事件吧,如果您还对委托不太了解,可以参考下这篇文章。 可能大多数人不太怎么关心事件是怎么形成的,只管一个控件上注册一个事件,然后再cs文件中填写相应该事件的代码,那么您如果想了解该方面的内容,希望本文对您有帮助。 事件允许进行一种交互。其实事件是作为类型的成员。定义一个事件成员意味着类型就为我们提供了三种能力。 *类型的静态方法或者对象的实例方法可以订阅类型事件...
阅读全文
摘要:看到button.Click+=new EventHandler(button1_Click);又忘记其中间过程了 委托我始终是学一遍,忘一遍,一个原因是我没用经常用道它,久而久之就忘记了,另一个原因是因为我没有深入的学习它。今天所以我决定用心搞明白它。这也是必备知识。 首先我们看一个例子代码Code highlighting produced by Actipro CodeHighligh...
阅读全文
摘要:让我们来看看同步异步的区别:同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作.NET框架基类库中有好几种类都可以提供同步和异步的方法调用。因为同步方法调用会导致程序流程中途等待,所以采用同步方法的情况下往往会导致程序执行的延迟相比来说,在某些条件下选择异步方法调用就可能更好一些例如,有的时候程序需要给多个W...
阅读全文
摘要:1.关于委托的BeginInvoke和EndInvoke方法.NET Framework 允许您异步调用任何方法。为此,应定义与您要调用的方法具有相同签名的委托;公共语言运行库会自动使用适当的签名为该委托定义 BeginInvoke 和 EndInvoke 方法。例如:namespace carydemo2{ public class CaryAsync { public string Long...
阅读全文
摘要:在C#.net中如何操作XML需要添加的命名空间:using System.Xml;定义几个公共对象:XmlDocument xmldoc ;XmlNode xmlnode ;XmlElement xmlelem ;1,创建到服务器同名目录下的xml文件:方法一:xmldoc = new XmlDocument ( ) ;//加入XML的声明段落xmlnode = xmldoc.CreateNod...
阅读全文
摘要:XmlDatasetConvert 该类提供了四种方法:1、将xml对象内容字符串转换为DataSet2、将xml文件转换为DataSet3、将DataSet转换为xml对象字符串4、将DataSet转换为xml文件XmlDatasetConvert.csusing System;using System.Collections.Generic;using System.Text;using Sy...
阅读全文
摘要:在.NET Framework 中,经常使用XML 作为存储和传输各种数据的格式。DataSet 中的数据可以转换成XML 的形式来表示和存储。我们可以使用XML 对象同步和转换DataSet 的数据,而DataSet 也可以存储和传输XML 格式的数据。 XML 与 DataSet 的关系如下图所示: DataSet 对象的常用方法如下:A. 使用ReadXml( ) 方法:从文件或流中加载XM...
阅读全文
摘要:IList 是 ICollection 接口的子代,并且是所有非泛型列表的基接口。IList 实现有三种类别:只读、固定大小和可变大小。无法修改只读 IList。固定大小的 IList 不允许添加或移除元素,但允许修改现有元素。可变大小的 IList 允许添加、移除和修改元素。下面的示例演示创建一个简单列表——固定大小列表的 IList 接口的实现。代码Code highl...
阅读全文
摘要:usingSystem;usingSystem.Collections;//注意usingCollectionsusingSystem.Collections.Generic;usingSystem.Text;namespaceEnumerableTest{classProgram{staticvoidMain(string[]args){Personperson=newPerson();fore...
阅读全文
摘要:实现ICollection注意:ICollectioninherits IEnumerable[代码]
阅读全文
摘要:将ICompareable和IComparer结合 比较大小这儿注意的是PersonComparer的比较方法 CompareTo调用了Person对象的重载比较方法CompareTO public int CompareTo(object obj, PersonCompareType compareType){.....}这样的话,Person能根据Comparer传过来的参数,进行相应的排序比...
阅读全文
摘要:实现ICompareable,使对象具有自定义的比较功能,只要实现其的一个方法(CompareTo)就可以了[代码]
阅读全文
摘要:现IComparer ,这样就可以在数组中或其它集合中自定义排序了,要实现其中的方法: public int Compare(object x, object y)[代码]
阅读全文
摘要:1. 使用QueryString变量QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:a.aspx的C#代码private void Button1_Click(object sender, System.EventArgs...
阅读全文
摘要:一、 关于 类型再具体学习枚举类型之前,先了解一下C#的类型。 (1)值类型 (a)变量可以直接包含它们自己的数据;如 int i = 35;(b)局部变量总是放在栈(stack)中。·(2)引用类型 (a)变量间接指向它们的数据;(b)局部变量指向堆(heap)中的对象.枚举(enum) 值类型结构(struct) 值类型类(class) 引用类型接口(interface) 引...
阅读全文
摘要:1. 什么是反射Reflection,中文翻译为 反射。 这是.Net中获取 运行时类型信息 的方式,.Net的应用程序由几个部分:'程序集(Assembly)’、'模块(Module)’、'类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如:通常程序员面试题,有这样关于反射的解释:反射可以动态地创建...
阅读全文
摘要:有一段时间,正则表达式学习很火热很潮流,当时在CSDN一天就能看到好几个正则表达式的帖子,那段时间借助论坛以及Wrox Press出版的《C#字符串和正则表达式参考手册》学习了一些基础的知识,同时也为我在CSDN大概赚了1000分,今天想起来,去找《C#字符串和正则表达式参考手册》时,已经不知所踪了。现在用到正则的时候也比较少,把以前的笔记等整理一下,以志不忘。(1)“@”...
阅读全文
摘要:今天,花费了一下午事件,终于算是了解了事件的处理机制。在C#中,对于事件的应用其实可以有四个步骤。1.在事件发行者中定义一个事件2.在事件发行者触发事件3.在事件订阅者中处理事件的处理程序4.向事件发行者订阅事件.在C#中事件是经常被用到的一种概念。如果要实现一个事件,首先要有两个对象,一个是触发事件的对象,一个是处理事件的对象。二者通过一个委托被联系在一起一个简单的例子,老公发工资了,老婆、儿子...
阅读全文
摘要:事件简介: 任何进行过图形用户界面开发的编程人员都会知道事件的概念。当用户在使用程序的时候,用户必然要和程序进行一定的交互。比如当用户点击窗体上的一个按钮后,程序就会产生该按钮被点击的事件,并通过相应的事件处理函数来响应用户的操作。这样用户的直观感觉就是程序执行了我要求的任务了。当然,事件并不一定是在和用户交互的情况下才会产生的,系统的内部也会产生一些事件并请求处理的,比如时钟事件就是一个很...
阅读全文
摘要:前一章着重介绍了ILGenerator,今天我们就要学习msil指令了,在我们动态创建方法里有一个类里属性都是包含着MSIL指令集,所以了我们只需要掌握了该类的这些字段也就可以使用任何托管的语言进行动态的使用MSIL指令集了。这个类就是System.Reflection.Emit.OpCodes类。该类的MSDN上的介绍是通过 ILGenerator 类成员(例如 Emit)为发出提供 Micro...
阅读全文
摘要:之前讲过关于如何动态创建和使用程序集、类、方法、字段、属性等两篇文章,第一篇主要讲了介绍动态创建类型的一些基本知识和如何创建程序集、类等,第二篇主要介绍的是如何使用动态创建的程序集,调用动态创建类的方法等的一个完整DEMO。今天讲的其实也是关于在动态创建类型里,如何动态的创建一个较复杂的方法,当然今天这一篇主要着重以介绍如何ILGenerator和一些概念,下一篇就来介绍MSIL指令集。 何为M...
阅读全文
摘要:上一节讲了如何动态的创建,这一节就要讲创建了我们需要如何使用了,这当然也是非常重要的, 是吧。创建了动态类型但是又不使用,那创建它有什么用了。呵呵,今天我们就来一起学习动态使用动态创建的类型。 当然我们跟上一章一样要对这些动态类型的使用类型进行一些了解。类:使用System.Type(任何时候都是反射出类型进行使用,难道不是吗?)构造函数:System.Reflection.Constructor...
阅读全文
摘要:有时候在整个项目架构里也需要动态创建程序集的需求,那如何创建程序集呢,请跟我来学习一下吧。 首先需要知道动态创建这些类型是使用的一些什么技术呢?其实只要相关动态加载程序集呀,类呀,都是使用反射,那么动态创建也一样使用的是反射,是属于反射的技术!也就是将对象或者数据映射成一个对象或者程序集保存起来而已。 首先我们需要了解每个动态类型在.net中都是用什么类型来表示的。程序集:System.Re...
阅读全文
摘要:在C#中,我们要使用反射,主要有三个方面:第一,反射程序集,模块,类的成员以及成员的一些信息;第二,接下来就是动态调用类的成员方法;第三个方面就动态产生程序集,模块和类以及类的成员。我们要使用反射,首先要搞清楚以下命名空间中几个类的关系:System.Reflection命名空间AppDomain:应用程序域,可以将其理解为一组程序集的逻辑容器Assembly:程序集类Module:模块类Type...
阅读全文
摘要:一、解决方案、项目、程序集、命名空间初学者很容易把这些概念搞混淆。先说说项目(Project),通俗的说,一个项目可以就是你开发的一个软件。在.Net下,一个项目可以表现为多种类型,如控制台应用程序,Windows应用程序,类库(Class Library),Web应用程序,Web Service,Windows控件等等。如果经过编译,从扩展名来看,应用程序都会被编译为.exe文件,而其余的会被编...
阅读全文
摘要:迭代器概述迭代器是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或 get 访问器的代码体。迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。有关更多信息,请参见 yield。可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(in...
阅读全文
摘要:ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。 2、使用ref和out时,在方法的参数和...
阅读全文
摘要:今天给一个同事讲一个程序,应该是一个比较基础的程序,但是把我给难住了(哎,才发现自己的基础也滥的可以了),程序大概是这样的: public class MyStringArray : IEnumerable { public IEnumerator GetEnumerator() { return (IEnumerator)new MyStringArrayEnumerator(this); } ...
阅读全文
摘要:1.System.Colloctions中表示集合的行为的接口有:1)ICollection定义所有集合的大小、枚举数和同步方法。派生于IEnumerable它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口)但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义2)IEnumerable公开枚举数,该枚举数支持在集合上进行简单迭代它只有一个方法 GetEnumer...
阅读全文
摘要:本章导读System.Collections.Generic和System.Collections集合的结构有很多相似之处,不同的是“Generic”提供的都是泛型集合,而“Collections”中的集合并不都支持泛型。System.Collections.Generic是在C# 2.0中新加的命名空间,主要用来创建强类型集合,以提高类型安全和操作...
阅读全文
摘要:System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。System.Collections.Specialized 命名空间包含专用的和强类型的集合,例...
阅读全文
摘要:1)IEnumerable:IEnumerable是公开枚举数,该枚举数支持在集合上进行简单迭代。必须对它进行实现才能支持ForEach语义。2)ICollection:派生自IEnumerable接口,定义所有集合的大小、枚举数和同步方法。3)IList:派生自ICollection。IList实现是可被排序且可按照索引访问其成员的值的集合,如ArrayList类。4)IDictionary:和...
阅读全文
摘要:对于.NET Framework提供的“标准”的集合类型可以直接使用foreach,如(Array、ArrayList、HashTable),除此之外,对于自定义的集合对象,也可以使其支持foreach的使用,只要实现IEnumerable接口即可(刚提到的几种集合类型都实现了这个接口)。先看个例子:publicclassHelloCollection:IEnumerabl...
阅读全文
摘要:一直以来,搞不懂IEnumerable与IEnumerator这两个接口的区别,今天看了一下MSDN并在网上搜了一把关于他们的区别,似乎理解了,但还是弄不懂他们最主要的区别是什么。看看MSDN是怎么定义他们的吧。再贴一个MSDN给出的例子:IEnumerable和IEnumerator有什么区别?这是一个很让人困惑的问题(在很多forum里都看到有人在问这个问题)。研究了半天,得到以下几点认识:1...
阅读全文
摘要:IEnumerator:提供在普通集合中遍历的接口,有Current,MoveNext(),Reset(),其中Current返回的是object类型。IEnumerable: 暴露一个IEnumerator,支持在普通集合中的遍历。IEnumerator<T>:继承自IEnumerator,有Current属性,返回的是T类型。IEnumerable<T>:继承自IEnu...
阅读全文
摘要:面向对象的三个基本特征是:封装、继承、多态。 封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。继承面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况...
阅读全文
摘要:自从使用.net以来就一直都在使用string.Format方法,一直没有空或者其他原因都没有深入去了解,主要还是因为项目上似乎没有这么高的要求,也没必要去深入了解,就算碰到了自定义的格式化内容也是写几个通用的方法而已。今天空下来仔细去理解了一下,在这里和大家分享一下,也希望大家一起交流。 string.Format方法是string类提供的静态方法,一般最多使用的是其两个参数的重载,例如:[代码...
阅读全文
摘要:basebase 关键字用于从派生类中访问基类的成员: 调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。 示例:在派生类中调用基类方法。 //base关键字//访问基类成员usingSystem;publicclassBaseClass{protectedstring_className="BaseClass"...
阅读全文
摘要:静态类和类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立于任何对象标识的数据和行为:无论对象发生什么更改,这些数据和函数都不会随之变化。当类中没有依赖对象标识的数据或行为时,就可以使用静态类。 静态类 类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework...
阅读全文
摘要:静态类静态类必须直接从基类System.Object派生,这是因为从其他基类型派生的类由于继承性仅适用于对象的缘故而没有任何意义,而且不能创建静态类的实例。 静态类不能实现任何接口,这是因为只有使用类的实例时才去调用类的接口。 静态类只能定义静态成员(字段、方法、属性和事件),任何实例成员都将导致编译器产生错误。 静态类不能用作字段、方法、参数或者局部变量,这是因为这些用法都将导致编译器...
阅读全文
摘要:DateTime结构 表示时间上的一刻,通常以日期和当天的时间表示。 它有很多比较重要的方法和属性这里我就的列举了。 它不能直接被赋值成 null, 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00:00, C#中DateTime的空值是最小值0001-01-01 00:00:00, 我建议是赋值成以下的方法 DateTime s = def...
阅读全文
摘要:GC类 它可以通过编程使用一个静态的成员集合与垃圾回收器进行交互。 一般只有使用那托管代码是才需要用到System.GC类 垃圾回收由以下步骤组成: 1. 垃圾回收器搜索托管代码中引用的托管对象。 2. 垃圾回收器尝试完成没有被引用的对象。 3. 垃圾回收器释放没有被引用的对象并回收它们的内存。Guid类 表示全局唯一标识符 (GUID)。 这个类园子里讨论比较火热。 大家可以看看以下面几篇文章...
阅读全文
摘要:类库是我们学习和开发的基本。 因为本人列举了一些常用的类,得到了很多网友的支持评论。为了更好的系统学习这些基础。本人打算写一系列的总结。希望对新手有所帮助,高手多多指点。以下主要涉及是的system命名空间的常用类 基本的Object和Type类,它构成了.NET FrameWork功能的基础。 多用途的类。如Array、Console和String,它们被用于许多不同类型的应用程序。 重要的基...
阅读全文
摘要:系统类 Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类。 DateTime结构,Guid 结构,ICloneable接口,IComparable接口,IConvertible接口, IDisposable类,集合类ICollection接口,IComparer接口,IDictio...
阅读全文
摘要:本文的重点是访问关键字(Access Keywords):base和this。虽然访问关键字不是很难理解的话题,我们还是有可以深入讨论的地方来理清思路。还是老办法,我的问题先列出来,您是否做好了准备。 • 是否可以在静态方法中使用base和this,为什么? • base常用于哪些方面?this常用于哪些方面? • 可以base访问基类的一切成员吗? &...
阅读全文
摘要:问题10:如何获得计算机的所有逻辑驱动器;解决方案:使用DriveInfo类(需要.NET 2.0)DriveInfo.GetDrives():获得计算机的所有逻辑驱动器,返回类型为DriveInfo[];问题11:如何获取指定驱动器的信息;解决方案:DriveInfo.Name:获取驱动器的名称(如C:\);DriveInfo.DriveType:获取驱动器的类型(如Fixed,CDRom,Re...
阅读全文
摘要:文件操作是程序中非常基础和重要的内容,而路径、文件、目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供给你一点有益的思路,如果你有好的建议,恳请能够留言,使这些内容更加完善。主要内容:一、路径的相关操作, 如判断路径是否合法,路径类型,路径的特定部分,合并路径,系统文件夹路径等内容;二、相关通用文件对...
阅读全文
摘要:1.System.Colloctions中表示集合的行为的接口有:1)ICollection定义所有集合的大小、枚举数和同步方法。派生于IEnumerable它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口)但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义2)IEnumerable公开枚举数,该枚举数支持在集合上进行简单迭代它只有一个方法 GetEnumer...
阅读全文
摘要:集合是OOP中的一个重要概念,C#中对集合的全面支持更是该语言的精华之一。 为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合:a.使用ArrayList 直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须进行繁琐的类型转换。 b.使用自定义集合类 比较常见的做法是从CollectionBase抽象类继承一个自定义类,通过对ILi...
阅读全文
摘要:一、基本概念反射:反射是一个运行库类型发现的过程。通过反射可以得到一个给定程序集所包含的所有类型的列表,这个列表包括给定类型中定义的方法、字段、属性和事件。也可以动态的发现一组给定类支持的借口、方法的参数和其他相关信息如基类、命名空间、数据清单等。二、命名空间 1.System.Reflection命名空间内的各类型(1)Assembly 通过它可以加载、了解和操纵一个程序集(2) Assembl...
阅读全文
摘要:例子这个东西其实挺难弄得,弄个简单的,虽然能说明问题但却容易让人觉得没实用价值,弄个有实用价值却又往往牵扯很多别的技术甚至牵扯很多业务逻辑,看起来很复杂很难懂。在这里我尽量追求几个有实用价值又不复杂的例子。1、使用反射通过读取配置文件来动态的创建相关类的对象我们先来看看Main函数和需要动态加载的对象在同一个程序集的情况结构图:接口[代码][代码][代码][代码][代码]如果在不同的程序集下,那主...
阅读全文
摘要:先看一个简单的例子[Table(Name="dbo.[User]")]public partial class User {当C#编译器发现这个属性有一个特性Table时,首先会把字符串Attribute添加到这个名称的后面,形成一个组合名称TableAttribute,然后在其搜索路径的所有命名空间中搜索有相同类名的类。但要注意,如果该特性名结尾是Attribute,编译器就不会把该字符串加到组...
阅读全文
摘要:Reflection,中文翻译为反射。这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成,而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息,例如:Assembly类可以获得正在运行的装配件信息,...
阅读全文
摘要:泛型CLR2.0的一个新特性是泛型。泛型是一个很强大的特性,对于集合类而言尤其如此。.NET1.0中的大多数集合类都基于Object类型。.NET从2.0开始提供了实现为泛型的新集合类。泛型不仅限于类,本章还将介绍用于委托、接口和方法的泛型。本章的主要内容如下:●泛型概述●创建泛型类●泛型类的特性●泛型接口●泛型方法●泛型委托●Framework的其他泛型类型9.1概述泛型并不是一个全新的结构,其...
阅读全文
摘要:C#学习之接口 什么是接口?其实,接口简单理解就是一种约定,使得实现接口的类或结构在形式上保持一致。个人觉得,使用接口可以使程序更加清晰和条理化,这就是接口的好处,但并不是所有的编程语言都支持接口,C#是支持接口的。注意,虽然在概念上,C#接口类似于COM接口,但他们的底层结构是不同的。那么,我们来看一下如何声明和使用接口。 声明接口 声明接口在语法上和声明抽象类完全相同,例如这里有一个银...
阅读全文
摘要:虚方法和抽象方法都可以供派生类重写,它们之间有什么区别呢?1. 虚方法必须有实现部分,抽象方法没有提供实现部分,抽象方法是一种强制派生类覆盖的方法,否则派生类将不能被实例化。如://抽象方法publicabstractclassAnimal{publicabstractvoidSleep();publicabstractvoidEat();}//虚方法publicclassAnimal{publi...
阅读全文

浙公网安备 33010602011771号