下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页设计ASP程序 → 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)__教程
使用 ASP+ DataGrid 控件来创建主视图/详细资料视图 (2)__教程
日期:2007-5-20 1:22:41 人气:84     [ ]
上一页 [1] [2] [3] [4] 下一页



图 9. 完成第 8 步后的页面

Titles DataGrid 以及 ImageColumn 的声明来自:

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();
}
}
}
}
}

DataGrid 控件所使用的每一列均由抽象的 Column 类派生而来。 列类型实施各种各样的属性 (诸如 HeaderText) 以及所有列类型所公用的样式。

ImageColumn 类用于添加针对其具体功能的属性,诸如 ImageField 和 ImageFormatString 属性。实施这些属性,是通过将各值存入列的 State 中实现的。列的状态,在 DataGrid 控件的往返过程中自动得到保持。
出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.