帮忙解释一下代码 简单 两天内结贴
代码也不是完全不懂得,可以大概看懂,但是不是十分清晰,请高手帮忙解释一下,有详细的立刻结贴。先谢谢了!
这是一个三层架构,自定义控件的一段代码,一个ddlList.cs文件。
[code=C#][/code]public class ddlList : System.Web.UI.WebControls.DropDownList
{
public enum Kind
{
BusinessProperty=0, Nation, Bank
}
private Kind category;
public Kind Category
{
get{ return this.category; }
set{ this.category = value; }
}
private DAL.CategoryInfo ci = new CategoryInfo();
protected override void OnPagePreLoad(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DataTable tbl = new DataTable();
tbl = ci.GetInfoByCategory(this.Category.ToString());
if (tbl == null)
return;
for (int i = 0; i < tbl.Rows.Count; i++)
{
ListItem item = new ListItem(tbl.Rows[i][0].ToString(), tbl.Rows[i][1].ToString());
this.Items.Add(item);
}
this.ValidateDataSource(this.DataSource);
base.OnPagePreLoad(sender, e);
}
}
------解决方案--------------------
Kind //定义一个枚举
Category //定义枚举属性
DAL.CategoryInfo ci = new CategoryInfo(); //创建数据访问对象
//重写页面load方法
protected override void OnPagePreLoad(object sender, EventArgs e)
{
//判断页面是否首次加载
if (!Page.IsPostBack)
{
//创建DataTable对象
DataTable tbl = new DataTable();
//将从数据库读取出的数据存放如dataTable中
tbl = ci.GetInfoByCategory(this.Category.ToString());
if (tbl == null)
return;
for (int i = 0; i < tbl.Rows.Count; i++)
{
ListItem item = new ListItem(tbl.Rows[i][0].ToString(), tbl.Rows[i][1].ToString());
this.Items.Add(item);
}
//这里应该是一个方法,传入一个数据源,绑定控件
this.ValidateDataSource(this.DataSource);
base.OnPagePreLoad(sender, e);
}
}
------解决方案--------------------C# code
public class ddlList : System.Web.UI.WebControls.DropDownList //从 DropDownList 继承的控件
{
public enum Kind //种类
{
BusinessProperty=0, Nation, Bank
}
private Kind category;
public Kind Category
{
get{ return this.category; }
set{ this.category = value; }
}
private DAL.CategoryInfo ci = new CategoryInfo(); //定义一个数据库访问的类
protected override void OnPagePreLoad(object sender, EventArgs e) //在页面Load以前执行
{
if (!Page.IsPostBack) //如果不是回发
{
DataTable tbl = new DataTable(); //定义一个DataTable
tbl = ci.GetInfoByCategory(this.Category.ToString()); //将数据装入DataTable
if (tbl == null) //如果返回null就退出
return;
for (int i = 0; i < tbl.Rows.Count; i++) //依次找DataTable的每一行
{
ListItem item = new ListItem(tbl.Rows[i][0].ToString(), tbl.Rows[i][1].ToString()); //第1列作为文本,第2列作为值
this.Items.Add(item); //添加到自身下拉列表中
}
this.ValidateDataSource(this.DataSource); //检查数据源是否有效
base.OnPagePreLoad(sender, e); //执行基类的方法
}
}
------解决方案--------------------
设置枚举从0开始,就是 Nation=1, Bank=2