日期:2014-05-18  浏览次数:20688 次

帮忙解释一下代码 简单 两天内结贴
代码也不是完全不懂得,可以大概看懂,但是不是十分清晰,请高手帮忙解释一下,有详细的立刻结贴。先谢谢了!

这是一个三层架构,自定义控件的一段代码,一个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