我爱Aspx >> Asp.Net >> 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)Step8.aspx:Step8.aspx:
<%@ Register TagPrefix="s" Namespace="Samples"%>
... <asp:DataGrid id="titlesGrid" runat="server" ...> <property name="Columns"> <s:ImageColumn ImageField="title_id"
ImageFormatString="images/Title-{0}.gif"/>
</property> ... </asp:DataGrid>
本页面包含一个寄存器指令,用于映射 <s:ImageColumn> 标记,以表示 Samples.ImageColumn
类。
DataGrid 的声明展示添加到 DataGrid 的 Columns 集合的 ImageColumn 。 还展示 ImageField 和 ImageFormatString 集,因而图象是以包含与特定行相关联的标题 ID 的 URL 为依据的。其工作原理与第 2 步中所使用的 HyperLinkColumn 十分类似。
ImageColumn.cs:
namespace Samples { ... public class ImageColumn : Column { private PropertyDescriptor imageFieldDesc; public ImageColumn() { } public string ImageField { get { object o = State["ImageField"]; return (o != null) ? (string)o : String.Empty; } set { State["ImageField"] = value; } } public string ImageFormatString { get { object o = State["ImageFormatString"]; return (o != null) ? (string)o : String.Empty; } set { State["ImageFormatString"] = value; } } // 在与该列相关联的单元格中创建 // 控件 public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType) { base.InitializeCell(cell, columnIndex, itemType); if ((itemType == ListItemType.Item) || (itemType == ListItemType.AlternatingItem) || (itemType == ListItemType.SelectedItem) || (itemType == ListItemType.EditItem)) { Image image = new Image(); image.ID = Column.GetColumnControlID(columnIndex, -1); cell.Controls.Add(image); if (ImageField.Length != 0) { image.AddOnDataBind(new EventHandler(this.OnDataBindColumn)); } } } // 将数据载入在 InitializeCell 中创建的控件 private void OnDataBindColumn(object sender, EventArgs e) { Image boundImage = (Image)sender; DataGridItem item = (DataGridItem)boundImage.NamingContainer; object dataItem = item.DataItem; if (IsFirstDataBind()) { string imageField = ImageField; imageFieldDesc = TypeDescriptor.GetProperties(dataItem)[imageField]; if (imageFieldDesc == null) { throw new Exception("Invalid property: '" + imageField + "'"); } OnFirstDataBindHandled(); } object data = imageFieldDesc.GetValue(dataItem); if (data != null) { string format = ImageFormatString; if (format.Length != 0) { boundImage.ImageUrl = String.Format(format, data); } else { boundImage.ImageUrl = data.ToString(); } } } } }
使用 ASP+ DataGrid 控件来创建主..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
什么才是提高ASP性能的最佳选择(..[05-05]
使用ASP和Word进行服务器端拼写检..[05-05]
ASP实现多语言支持[05-05]
使用 ASP+ DataGrid 控件来创建主..[05-05]
手册中关于怎样使用TQuery 的误导[05-05]
从HTML到XML[05-05]
怎样黑进Microsoft:循序渐进指南[05-05]
如何区别文本是BIG5还是GB?[05-05]
CIH病毒原理的应用——物理内存的..[05-05]
用Linux+IPChains代替Windows+Wi..[05-05]
在Linux下使用ISDN拨号上网[05-05]
ImageXye:让VC图象显示比VB更好用[05-05]
在使用微软提供的安全模版(安全..[05-05]