现在的位置: 首页 > 综合 > 正文

TextDataSource(1) — DataSourceControl内幕

2012年03月24日 ⁄ 综合 ⁄ 共 1754字 ⁄ 字号 评论关闭

        .NET 2.0中Web Site开发的数据操作和1.1下的有很大的差别,虽然像DataSet、SqlConnection、SqlCommand等组件还是能继续使用,但其使用方式有了很大变化:在.NET 2.0里HtmlForm和Page之间的界限更明确,两者之间的唯一联系就是HtmlForm里的Page指令中的CodeFile、Inherits,这样做的好处我想不外乎是让服务端代码和客户端代码分离更彻底,代码更清晰;.NET 2.0里所有的组件都放置在Component Designer中,而不像1.1下组件放置在HtmlForm Container上,这样做的直接影响就是HtmlForm的DataGrid这样的数据绑定控件就不能直接通过属性窗口把DataSet设置到其DataSource属性上,所以ms把DataGrid的DataSource属性让其在属性窗口中不可见了(很狡猾吧),取而代之的DataSourceId这样的一个属性,那我们下面就来看看DataSourceId到底是个什么样的东西呢?
        在.NET 2.0里Web开发中增加了SqlDataSource、AccessDataSource、ObjectDataSource、XmlDataSource和SiteMapDataSource五个新的数据源控件,至于这五个控件的用户请大家去查相关的帮助,而DataSourceId就是选择这五种控件的。
        有个比较有意思的问题,上述的五个是控件,但是在运行时却没有UI呈现,与控件的定义稍微有点相左:控件是指在运行时有呈现UI的组件,哈,如果我理解有问题,请高手不要留情,给与指教。
        既然上述的五个是.NET 2.0的特色,那我们就来深层次的了解下它的内部机制,我将会写一个TextDataSource(可以绑定到Text文件,把文件的数据显示出来。)为例来说明。
        要想DataGrid等数据绑定控件能通过DataSourceId能选择放置在HtmlForm上的数据源控件,其实很简单只要让你的数据源控件继承于IDataSource接口就可以了,在.NET里还为我们提供了一个DataSourceControl的基类,它也是从IDataSource接口继承下来的,而且为我们封装了些基本操作,所以就直接从DataSourceControl继承。

using System;
using System.Collections;
using System.Data;
using System.IO;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TextDataSourceLib
{
    [AspNetHostingPermission(SecurityAction.Demand, Level 
= AspNetHostingPermissionLevel.Minimal)]
    
public class TextDataSource : DataSourceControl
    
{
        
public TextDataSource() : base() { }

        
private string _fileName;
        
public string FileName
        
{
            
get
            
{
                
return _fileName;
            }

            
set
            
{
                _fileName 
= value;
            }

        }


        
protected override DataSourceView GetView(string viewName)
        
{
            
return null;
        }

    }

}

效果如下:

抱歉!评论已关闭.