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