• λ我爱Aspx >> Asp.Net >> 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)
  • 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)

  • :未知  Դ:internet  :2007-5-5 19:46:21  ؼ:asp
  • 的声明来自:

    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 。 还展示 ImageFieldImageFormatString 集,因而图象是以包含与特定行相关联的标题 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(); } } } } }

    Ҷƪл˵?
  • һƪAlpha 闪烁效果
    һƪ使用 ASP+ DataGrid 控件来创建主视图/详细资料视图