首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

帮忙解释一下代码 简单 两天内结贴解决办法

2012-05-20 
帮忙解释一下代码 简单 两天内结贴代码也不是完全不懂得,可以大概看懂,但是不是十分清晰,请高手帮忙解释一

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

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

热点排行