第三讲 Web表单高级技巧
这部分讲得对初学者有点难,我觉得自定义控件,我要好好补上这一课!
DataGrid, DataList, Repeater
使用Template
自定义数据绑定
<ASP:TEMPLATECOLUMN HeaderText="Country">
<ITEMTEMPLATE>
<ASP:LABEL Runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Country") %>'></ASP:LABEL>
</ITEMTEMPLATE>
<EDITITEMTEMPLATE>
<ASP:DROPDOWNLIST Runat="server" ID="lstCountries"></ASP:DROPDOWNLIST>
</EDITITEMTEMPLATE>
</ASP:TEMPLATECOLUMN>
*自定义控件
派生的控件
用户控件
复合控件
自描绘控件
Designer
*自描绘控件
捕获按钮点击事件
IPostBackEventHandler
捕获提交来的数据
IPostBackDataHandler
使用客户端脚本
*Designer
ControlDesigner
TemplatedControlDesigner
UserControlDesigner
TextControlDesigner
……
*使用模板
ITemplate类型的Property表示一种模板
模板由框架自动实现
[TemplateContainer(typeof(MyContainer))]
public ITemplate ItemTemplate
{
get { return itemTemplate; }
set { itemTemplate=value; }
}
itemTemplate.InstantiateIn(this);
<MY:WEBCUSTOMCONTROL1 runat="server" Text="Hello world!" id="c1">
<ITEMTEMPLATE>
<ASP:BUTTON Runat="server" Text=" <%# Container.Text %>"></ASP:BUTTON>
</ITEMTEMPLATE>
</MY:WEBCUSTOMCONTROL1>
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.EditItem)
{
DropDownList lstCountries=(DropDownList)e.Item.FindControl("lstCountries");
lstCountries.Items.Add("CN");
lstCountries.Items.Add("US");
}
}
*在数据绑定中使用模板
使用专门的 Container 定位数据行
处理 Postback 时没有数据源的情况
使用样式单
Bubble事件
网上也找到一些组件开发的资料
开心每一天,幸福每一刻
http://www.cnblogs.com/suiqirui19872005/category/109018.html