ASP.NET中设计带事件定制控件(4)

发表于:2007-06-30来源:作者:点击数: 标签:
为了访问Default.ASPx网页的新功能,我们需要在该类的OnInit部分添加事件处理程序: (图7) 如上图所示,StoreSelectorChanged事件出现在了Default.aspx网页上。下面我们赋予它一个功能。我将在Default.aspx网页上添加6个标签,随DropDownList的变化显示值
     为了访问Default.ASPx网页的新功能,我们需要在该类的OnInit部分添加事件处理程序:
  
  
  
  (图7)
  
    如上图所示,StoreSelectorChanged事件出现在了Default.aspx网页上。下面我们赋予它一个功能。我将在Default.aspx网页上添加6个标签,随DropDownList的变化显示值:
  
  
  
  图8)
  
    现在我们来编写事件。
  
    美观是Intellisense是Intellisense认可定制的EventArg类属性的原则:
  
  
  
  (图9)
  
    最终的事件函数如下所示:
  
  #code
  private void StoreSelector1_StoreSelectorChanged(object
  sender, Pubs.Controls.StoreSelectorCommandEventArgs e)
  {
   Label1.Text = e.stor_id;
   Label2.Text = e.stor_name;
   Label3.Text = e.stor_address;
   Label4.Text = e.city;
   Label5.Text = e.state;
   Label6.Text = e.zip;
  }
  #end code
  
    现在我们对该项目进行测试。该网页一加载,读者的头脑中可能会闪现出这样的念头:它有问题,但我向你保证保证,该项目没有任何问题。如果想在网页一加载时就触发该事件,我们必须通过设置DropDownList控件中有选择的索引属性在已经创建的控件中进行设置。
  
  
  
  (图10)
  
    只要我们从DropDownList中选择另一个Store,标签就会发生变化:
  
  
  
  (图11)
  
    现在我们使表单加载到第一个记录。我们在StoreSelector控件上添加下面的属性:
  
  #Code
  public int SelectedIndex
  {
   get{ return storeList.SelectedIndex; }
   set
   {
    if(!Page.IsPostBack)
    {
     BindData();
    }
    if(value < storeList.Items.Count)
    {
     storeList.SelectedIndex = value;
     OnStoreSelectorChanged(
      new StoreSelectorCommandEventArgs
       (data.Tables["stores"].Rows[value].ItemArray[0].ToString(),
       data.Tables["stores"].Rows[value].ItemArray[1].ToString(),
       data.Tables["stores"].Rows[value].ItemArray[2].ToString(),
       data.Tables["stores"].Rows[value].ItemArray[3].ToString(),
       data.Tables["stores"].Rows[value].ItemArray[4].ToString(),
       data.Tables["stores"].Rows[value].ItemArray[5].ToString()));
    }
   }
  }
  #End Code
  
    然后设置Default.aspx中Page_Load事件的属性:
  
  #code
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 用户初始化网页的代码
   if(!Page.IsPostBack)
   {
    StoreSelector1.SelectedIndex = 0;
   }
  }
  #end code
  
    运行该项目时,它就会将表单加载到第一个记录。
  
    小结
  
    希望这篇文章能够对广大读者有一定的帮助。这种类型的Web应用程序的开发几乎没有什么限制,只要设计得当,我们创建的每个Web控件可以在整个Web应用程序中使用。
  

原文转自:http://www.ltesting.net