• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

我有一个梦想。。。

学习.net技术
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

学习cnblogsGuestBook V2.0

下载了cnblogsGuestBook V2.0 的源码,在Vs.net里调试了一下,并照着它的思路自己重做了一个。
对“窗体设计器”有了一个新的认识,可见偶的菜鸟看点http://www.cnblogs.com/lovewangshu/archive/2005/03/22/123305.html
通过“窗体设计器”往页面上拖Connection、DataAdapter、DataSet对象,在页面类中自动添加对应的类属性,如:
public class _default : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.TextBox txtboxTitle;
        
protected System.Web.UI.WebControls.TextBox txtboxContent;
        
protected System.Web.UI.HtmlControls.HtmlTableCell TD1;
        
protected System.Data.OleDb.OleDbDataAdapter da;
        
protected System.Data.OleDb.OleDbConnection conn;
        
protected System.Web.UI.WebControls.DataList dlList;
        
protected System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
        
protected System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
        
protected System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
        
protected System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
        
protected cnblogsGuestbook.ds ds1;
        
protected System.Web.UI.WebControls.Button btnSubmit;

根据自己的配置,“窗体设计器”自动生成初始化的方法,如:
    private void InitializeComponent()
        
{    
            
this.da = new System.Data.OleDb.OleDbDataAdapter();
            
this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
            
this.conn = new System.Data.OleDb.OleDbConnection();
            
this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
            
this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
            
this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
            
this.ds1 = new cnblogsGuestbook.ds();
            ((System.ComponentModel.ISupportInitialize)(
this.ds1)).BeginInit();
            
this.dlList.ItemCommand += new System.Web.UI.WebControls.DataListCommandEventHandler(this.dlList_ItemCommand);
            
this.btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);
            
// 
            
// da
            
// 
            this.da.DeleteCommand = this.oleDbDeleteCommand1;
            
this.da.InsertCommand = this.oleDbInsertCommand1;
            
this.da.SelectCommand = this.oleDbSelectCommand1;
            
this.da.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
                                                                                         
new System.Data.Common.DataTableMapping("Table", "tbl_msg", new System.Data.Common.DataColumnMapping[] {
                                                                                            
new System.Data.Common.DataColumnMapping("msg_content", "msg_content"),
                                                                                                                                                                                                    
new System.Data.Common.DataColumnMapping("msg_id", "msg_id"),
                                                                                                                                                                                                    
new System.Data.Common.DataColumnMapping("msg_time", "msg_time"),
                                                                                                                                                                                                    
new System.Data.Common.DataColumnMapping("msg_title", "msg_title")}
)}
);
            
this.da.UpdateCommand = this.oleDbUpdateCommand1;
..
}

 

  这个方法在override protected void OnInit(EventArgs e)中被调用,

override protected void OnInit(EventArgs e)
        
{
            
//
            
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            
//
            InitializeComponent();
            
base.OnInit(e);
        }

页面第一次被打开时,执行顺序为:OnInit()-------InitializeComponent()-------base.OnInit(e)------Page_Load()
可以理解为页面类的构造过程中已经完成了页面类属性的初始化,页面类的其他方法,可以直接使用这些属性。这样,可以避免V1.0 中出现的其他方法重复配置Ado.net组件的毛病。

偶对V2.0 的认识在于:V2.0 充分利用了“页面”相当于“类”,以及“类”的一些操作特点,来实现留言本。

posted on 2005-03-25 13:32  sooloo  阅读(937)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3