All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
ASP.NET,2.0程序安全的基础知识_.net资料_编程技术
delphi结构化异常处理
Asp.Net,Ajax,学习笔记15,如何使用ASP.NET,Profile_[Asp.Net教程]
.Net中如何操作IIS(源代码)_[Asp.Net教程]
多文件上传Asp.net(C#)_[Asp.Net教程]
Asp.Net2.0数据库基本操作方法学习_.net资料_编程技术
.NET,Remoting程序开发入门篇_.net资料_编程技术
ASP.NET开发经验(2):ASP.NET中的一些图形处理_[Asp.Net教程]
6种ASP.NET跨页面传值的方法_[Asp.Net教程]
ASP.NET查询ACCESS数据库的内容并在DATAVIEW中显示出来_.net资料_编程技术
Reading number is top 10 pictures
关于海盗的研究2
The beginning and end
The most popular girls welcome eggplant
七步解决性冷淡
人美胸美腿更美1
恶搞漫画2
Absolutely shocked. National geographic 50 animal photographys3
Female model behind the bitterness, often being overcharged5
In the world the most mysterious 21 place landscape2
性感丰满身材火爆de美女1
Download software ranking
Boxer Classic video1
Sora aoi 120 minutes
Twenty piece of palm leaf
都市狐狸姑娘传
Unix video tutorial11
艳兽都市
终极变速大师Speeder3.26
ASP.NET.2.0.XML.高级编程(第3版)
Boxer vs Yellow1
Eclipse-CALMSANNY (second edition)
delv published in(发表于) 2014/1/6 9:02:45 Edit(编辑)
ASP.NET中根据XML动态创建使用WEB组件_[Asp.Net教程]

ASP.NET中根据XML动态创建使用WEB组件_[Asp.Net教程]

ASP.NET中根据XML动态创建使用WEB组件_[Asp.Net教程]

前段时间笔者在开发中需要动态创建WEB组件,本以为是小事一桩,谁知看时容易做时难。里面还真有些小问题。下面笔者就结合自己的程序来介绍一下如何动态创建并使用WEB组件,希望能给做类似工作的朋友提供一点帮助。

一、程序思路

程序主要分三部分:

1、程序要根据XML中的数据信息确定需要创建的WEB组件的个数。

2、动态创建WEB组件。

3、使用动态创建的WEB组件。

其中2和3是笔者要重点介绍的部分。

下面笔者就按照这三部分结合程序实例(以c#为例)来一一介绍。

二、读取XML文件

读取XML文件在很多的资料中都有详细的说明,而且相信很多朋友都已经很好的掌握了其技术。但为了保证文章的完整性,笔者在这里还是要赘述几句。深谐其味的朋友可以略过此段不看。

笔者程序中要读取的XML文件形如下列:

config.xml





net

6

2



站点1

192.8.198.1

1





站点2

192.8.198.2

2



… …


读取XML文件的程序如下:

protected void readconfig()

{

try

{

System.Xml.XmlDocument mXmlDoc=new System.Xml.XmlDocument();

mXmlDoc.Load(Server.MapPath(configfilepath));

nettype=mXmlDoc.SelectNodes("//Root/Nettype")[0].InnerText; totalnum=int.Parse(mXmlDoc.SelectNodes("//Root/Totalnum")[0].InnerText);

//读出列数

cells=int.Parse(mXmlDoc.SelectNodes("//Root/Cells")[0].InnerText);

XmlNodeList mXmlNodes=mXmlDoc.SelectNodes("//Root/IPlink");

foreach(XmlNode IPlinkchildlNode in mXmlNodes)

{

//得到序列号

int icount=int.Parse(IPlinkchildlNode.ChildNodes[2].InnerText);

//根据序列号,将测量点的名称放入名称数组相应的位置上

namestr[icount]=IPlinkchildlNode.ChildNodes[0].InnerText;

//根据序列号,将测量点的IP放入IP数组相应的位置上

ipstr[icount]=IPlinkchildlNode.ChildNodes[1].InnerText;

}

}

catch

{

errmessage.InnerHtml="



不能读取配置文件,可能的错误是
"+"1、配置文件不存在
"+

"2、配置文件内容被损坏"+

"

";

}

}
程序中对XML中无子节点的元素如:

net
直接使用如下语句读取。

mXmlDoc.SelectNodes("//Root/Nettype")[0].InnerText;
对于有子节点的元素如:



站点1

192.8.198.1

1


要使用语句如下来读取。

IPlinkchildlNode.ChildNodes[N].InnerText
其中 ChildNodes[N] 中的[N]为子节点的序号,子节点

站点1
的序号应该为[0]。

三、动态创建WEB组件。

先来看程序实例:

private void createconfigtable(int totalnum,int[] sequenceint,string[] namestr,string[] ipstr)

{

//根据得到测量点的总数,动态生成输入框

for(int i=1;i<=totalnum;i++)

{

//创建表格

HtmlTable showtable = new HtmlTable();

showtable.Border=0;

showtable.ID="showtable"+i.ToString();

showtable.BorderColor="#000000";

showtable.CellPadding=4;

showtable.CellSpacing=4;

showtable.Align="center";

myPlaceHolder.Controls.Add(showtable);

//创建一行

HtmlTableRow tRow = new HtmlTableRow();

showtable.Rows.Add(tRow);

//创建第一列(序号)

HtmlTableCell tCell = new HtmlTableCell();

Label sequenceLabel = new Label();

sequenceLabel.ID="sequenceLabel"+i.ToString();

sequenceLabel.Text="序号:";

sequenceLabel.Enabled=true;

tCell.Controls.Add(sequenceLabel);

tRow.Cells.Add(tCell);

//创建第二列

tCell = new HtmlTableCell();

sequencedataTB = new TextBox();

sequencedataTB.ID="sequencedataTB"+i.ToString();

sequencedataTB.Text=i.ToString();

sequencedataTB.Width=30;

sequencedataTB.Text=sequenceint[i].ToString();

sequencedataTB.ReadOnly=false;

//创建第三列(名称)

tCell = new HtmlTableCell();

Label nameLabel = new Label();

nameLabel.ID="nameLabel"+i.ToString();

nameLabel.Text="名称:";

nameLabel.Enabled=true;

tCell.Controls.Add(nameLabel);

tRow.Cells.Add(tCell);

//创建第四列

tCell = new HtmlTableCell();

nameTB=new TextBox();

nameTB.ID="nameTB"+i.ToString();

nameTB.Width=120;

nameTB.Text=namestr[i];

nameTB.MaxLength=50;

tCell.Controls.Add(nameTB);

tRow.Cells.Add(tCell);

//创建第五列(IP)

tCell = new HtmlTableCell();

Label ipLabel = new Label();

ipLabel.ID="ipLabel"+i.ToString();

ipLabel.Text="IP:";

ipLabel.Enabled=true;

tCell.Controls.Add(ipLabel);

tRow.Cells.Add(tCell);

//创建第六列

tCell = new HtmlTableCell();

ipTB=new TextBox();

ipTB.ID="ipTB"+i.ToString();

ipTB.Width=120;

ipTB.Text=ipstr[i];

ipTB.MaxLength=15;

tCell.Controls.Add(ipTB);

tRow.Cells.Add(tCell);

}

}

tCell.Controls.Add(sequencedataTB);

tRow.Cells.Add(tCell);

… …

//创建第五列(IP)

tCell = new HtmlTableCell();

Label ipLabel = new Label();

ipLabel.ID="ipLabel"+i.ToString();

ipLabel.Text="IP:";

ipLabel.Enabled=true;

tCell.Controls.Add(ipLabel);

tRow.Cells.Add(tCell);

//创建第六列

tCell = new HtmlTableCell();

ipTB=new TextBox();

ipTB.ID="ipTB"+i.ToString();

ipTB.Width=120;

ipTB.Text=ipstr[i];

ipTB.MaxLength=15;

tCell.Controls.Add(ipTB);

tRow.Cells.Add(tCell);

}

}

程序中的myPlaceHolder 是 System.Web.UI.WebControls.PlaceHolder 组件,使用该组件的HTML语法如下:

… …















… …

使用该组件的目的是为了定位动态创建的表格。该组件在页面上的位置即为动态创建的表格的位置。

程序中另外一个要说明的地方是动态创建的组件的ID的设定。组件的ID的设定要注意两点:

1、ID号不能重复

2、要便于在程序中使用。因为要在程序中使用动态创建的组件,要通过该组件的ID来查找。(关于这一点,在“使用动态创建的WEB组件”部分会有较为详细的介绍)


作者:厉铁帅 来源:ASPCOOL





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.