也谈绑定dropdownlist(3)

网络整理 - 07-26
在前面的文章里,讲了些方法,如果大家仔细体会的其实都还是老的一套方法,根本没有体现面向对象过程编程的思想。并且前面2篇文章的那种方法,代码的重复利用率不高。

我们可以把DDLItem表给对象化,把表里的字段当作其属性,我先创建个对象类,类名为DDLItemInfo,代码如下所示:

using System;



namespace BindDropDownList

{

/// <summary>

/// 主要是把DDLItem表对象化,

/// 把表的字段变为属性,可以任意的

/// 获取或设置该属性的值。

/// </summary>

public class DDLItemInfo

{

//定义内部变量

private int _id;

private string _ItemName;



//定义2重构造函数

public DDLItemInfo(){}



public DDLItemInfo( int id, string ItemName )

{

_id = id;

_ItemName = ItemName;

}



//定义成员的方法

public int id

{

get

{

return _id;

}

set

{

_id = value;

}

}



public string ItemName

{

get

{

return _ItemName;

}

set

{

_ItemName = value;

}

}

}

}

然后创建为该表使用的方法的类库,类名DDLItem.cs,代码如下所示:

using System;

using System.Collections;

using System.Data;

using System.Data.SqlClient;



namespace BindDropDownList

{

/// <summary>

/// 对DDLItem 表的各种SQL操作。

/// </summary>

public class DDLItem

{

public DDLItem(){}



//定义数据库连接字串

private const string SQL_CONN_STRING = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];



//定义SQL语句

private const string SQL_SELECT_DDLIIEMS = "select id, ItemName from DDLItem order by id desc";



//构造一个方法来读取所有的DDLItem表里的记录

public IList Get_DDLItems()

{

//实例化一个可动态增加长度的数组

IList itemList = new ArrayList();

//定义数据库连接

SqlConnection myConn = new SqlConnection( SQL_CONN_STRING );

//定义SQL命令

SqlCommand myCommand = new SqlCommand( SQL_SELECT_DDLIIEMS, myConn );

//打开数据库

myCommand.Connection.Open();

//定义一个SqlDataReader

SqlDataReader rdr = myCommand.ExecuteReader();

//开始循环读取记录

while( rdr.Read() )

{

//构造一个实例化的DDLItem表对象

DDLItemInfo itemInfo = new DDLItemInfo(

rdr.IsDBNull( 0 ) ? 0 : rdr.GetInt32( 0 ),

rdr.IsDBNull( 1 ) ? string.Empty : rdr.GetString( 1 )

);

itemList.Add( itemInfo );

}

//关闭SqlDataReader和SqlConnection

rdr.Close();

myCommand.Connection.Close();



return itemList;

}



}

}



上面就把我们要操作的方法都定义好了,下面就是怎么调用的问题了,再创建一个Aspx的页面,代码如下所示:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;



namespace BindDropDownList

{

/// <summary>

/// Example3 的摘要说明。

/// </summary>

public class Example3 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.DropDownList DropDownList1;

protected System.Web.UI.WebControls.Button Button1;



private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

}



#region Web Form Designer generated code

override protected void OnInit(EventArgs e)

{

//

// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}



/// <summary>

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

/// </summary>

private void InitializeComponent()

{

this.Button1.Click += new System.EventHandler(this.Button1_Click);

this.Load += new System.EventHandler(this.Page_Load);



}

#endregion



private void Button1_Click(object sender, System.EventArgs e)

{

//使用DDLItem类的Get_DDLItems方法,取得记录

IList list = new DDLItem().Get_DDLItems();

//判断有没有记录

if( list.Count != 0 )

{

//把记录加到DropDownList1上

for( int i = 0 ; i < list.Count; i++ )

{

DDLItemInfo itemInfo = ( DDLItemInfo )list[i];

DropDownList1.Items.Add( new ListItem( itemInfo.ItemName, itemInfo.id ) );

}

}



}

}

}



这个话,我们在以后管理DDLItem内容时,直接调用Get_DDLItems这个方法就可以列出所有的DDLItem信息,并且一次开发完毕后,对于DDLItem表的结构,通过DDLItemInfo类的属性就能一清二楚的知道,这样也提高效率。