挑战自我
超越自我,不断的接受和面对挑战
博客园
首页
新闻
新随笔
联系
管理
订阅
随笔- 21 文章- 4 评论- 55
为DataGrid创建自定义列控件(三)
通过前面两篇文章的学习,大家对自定义列控件的基本知识都掌握了,本节为大家巩固下前面学习的东西,以上篇文章为基础,扩展审查列控件,使它能审查多个单词。
我们通过把要检查的单词和替换的单词保存在XML文件中,这样便于修改。
XML文件如下(Text.xml):
<?
xml version="1.0" encoding="utf-8"
?>
<
censors
>
<
censor
>
<
find
>
wit
</
find
>
<
replace
>
w*t
</
replace
>
</
censor
>
<
censor
>
<
find
>
ra
</
find
>
<
replace
>
*a
</
replace
>
</
censor
>
</
censors
>
完整代码如下:
public
class
CensorColumn :DataGridColumn
{
private
string
m_DataFiled;
public
string
DataField
{
get
{
return
this
.m_DataFiled;
}
set
{
this
.m_DataFiled
=
value;
}
}
//
检查文本
private
string
m_XmlFile;
public
string
XmlFile
{
get
{
return
this
.m_XmlFile;
}
set
{
this
.m_XmlFile
=
value;
}
}
public
override
void
InitializeCell(TableCell cell,
int
columnIndex, ListItemType itemType)
{
base
.InitializeCell (cell, columnIndex, itemType);
if
((itemType
==
ListItemType.AlternatingItem)
||
(itemType
==
ListItemType.SelectedItem)
||
(itemType
==
ListItemType.Item))
{
cell.DataBinding
+=
new
EventHandler(PerformDataBinding);
}
}
private
void
PerformDataBinding(
object
sender, System.EventArgs e)
{
TableCell cell
=
(TableCell)sender;
DataGridItem gridItem
=
(DataGridItem)cell.NamingContainer;
Object dataItem
=
gridItem.DataItem;
if
(
!
this
.m_DataFiled.Equals(
string
.Empty))
{
cell.Text
=
PerformShip((
string
)DataBinder.Eval(dataItem, DataField));
}
}
private
string
PerformShip(
string
text)
{
if
(m_XmlFile.Equals(
string
.Empty))
{
return
text;
}
else
{
return
PerformXml(text);
}
}
private
string
PerformXml(
string
text)
{
string
file
=
HttpContext.Current.Server.MapPath(
this
.XmlFile);
if
(
!
File.Exists(file))
{
return
text;
}
else
{
XmlDocument doc
=
new
XmlDocument();
doc.PreserveWhitespace
=
true
;
doc.Load(file);
XmlNode node
=
doc.DocumentElement;
XmlNodeList findNodes
=
node.SelectNodes(
"
/censors/censor/find
"
);
XmlNodeList replaceNodes
=
node.SelectNodes(
"
/censors/censor/replace
"
);
int
i;
for
(i
=
0
;i
<
findNodes.Count;i
++
)
{
text
=
text.Replace(findNodes.Item(i).InnerText,replaceNodes.Item(i).InnerText);
}
return
text;
}
}
}
在DataGrid中添加列控件:
<
Columns
>
<
custcols:CensorColumn
XmlFile
="Text.xml"
DataField
="ShipCountry"
></
custcols:CensorColumn
>
</
Columns
>
效果图:
一口气写完了三篇,相信大家看完后掌握了自定义列控件开发的基本知识。这三篇文章都是从很基础的角度讲述列控件的开发,如果你想要进一步的提高,可以看看lovecherry的这篇文章
http://lovecherry.cnblogs.com/lovecherry/archive/2005/05/01/148504.html
。
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted @ 2005-10-28 17:25
jierry
阅读(1409)
评论(2)
编辑
收藏
发表评论
264108
回复
引用
查看
#1楼
2005-10-28 18:12
|
zfphere
你的这种做法是不是 每个cell都要访问xml文件
回复
引用
查看
#2楼
[
楼主
]
2005-10-28 20:44
|
jierry
是的,所以效率不高。只是举个例子。
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
iPhone 5四大猜想:泪珠状 带LED苹果标识
·
当当网Q4整体亏损1.3亿元 上年同期净利润1480万元
·
把孩子培养成为合格Geek的七个方法
·
担心网购的衣服不合身? 创业公司Clothes Horse用“问答”就能解决你的难题
·
评价社交媒体活动ROI的三个精确指标
»
更多新闻...
最新知识库文章
:
·
编程的艺术:漂亮的代码和漂亮的软件
·
GIT分支管理是一门艺术
·
编程:是一门艺术
·
编程是一门艺术吗?
·
对Java初学者的忠告
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
公告
个人资料
网名:jierry
Email:jierry@gmail.com
来自:成都
在线人数:
最近在读的书:
昵称:
jierry
园龄:
7年6个月
粉丝:
0
关注:
0
<
2005年10月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
更多链接
随笔分类
ASP.NET(8)
(rss)
ASP.NET2.0(2)
(rss)
C#(5)
(rss)
JAVASCRIPT&XML
(rss)
SQL&存储过程(5)
(rss)
WEB SERVER
(rss)
服务器控件(2)
(rss)
软件工程
(rss)
随笔档案
2006年4月 (2)
2006年3月 (2)
2005年12月 (1)
2005年11月 (1)
2005年10月 (3)
2005年8月 (5)
2005年5月 (1)
2005年3月 (6)
文章档案
2005年11月 (3)
2005年3月 (1)
Blog收藏
宝玉
宝玉的家
灵感之源
我的备份
中国Rainbow
朋友的家
真水无香的专栏
积分与排名
积分 - 38180
排名 - 2812
阅读排行榜
推荐排行榜