|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。asp.net|web|xml|创立|静态前段工夫笔者在开辟中必要静态创立WEB组件,本觉得是大事一桩,谁知看时简单做时难。内里还真有些小成绩。上面笔者就分离本人的程序来先容一下怎样静态创立并利用WEB组件,但愿能给做相似事情的伴侣供应一点匡助。
1、程序思绪
程序次要分三部分:
1、程序要依据XML中的数据信息断定必要创立的WEB组件的个数。
2、静态创立WEB组件。
3、利用静态创立的WEB组件。
个中2和3是笔者要重点先容的部分。
上面笔者就依照这三部分分离程序实例(以c#为例)来逐一先容。
2、读取XML文件
读取XML文件在良多的材料中都有具体的申明,并且信任良多伴侣都已很好的把握了其手艺。但为了包管文章的完全性,笔者在这里仍是要赘述几句。深谐其味的伴侣能够略过此段不看。
笔者程序中要读取的XML文件形以下列:
config.xml
<?xmlversion="1.0"?>
<Root>
<Nettype>net</Nettype>
<Totalnum>6</Totalnum>
<Cells>2</Cells>
<IPlink>
<Name>站点1</Name>
<IP>192.8.198.1</IP>
<Sequence>1</Sequence>
</IPlink>
<IPlink>
<Name>站点2</Name>
<IP>192.8.198.2</IP>
<Sequence>2</Sequence>
</IPlink>
……
</Root>
读取XML文件的程序以下:
protectedvoidreadconfig()
{
try
{
System.Xml.XmlDocumentmXmlDoc=newSystem.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);
XmlNodeListmXmlNodes=mXmlDoc.SelectNodes("//Root/IPlink");
foreach(XmlNodeIPlinkchildlNodeinmXmlNodes)
{
//失掉序列号
inticount=int.Parse(IPlinkchildlNode.ChildNodes[2].InnerText);
//依据序列号,将丈量点的称号放进称号数组响应的地位上
namestr[icount]=IPlinkchildlNode.ChildNodes[0].InnerText;
//依据序列号,将丈量点的IP放进IP数组响应的地位上
ipstr[icount]=IPlinkchildlNode.ChildNodes[1].InnerText;
}
}
catch
{
errmessage.InnerHtml="<tablealign=center><tr>
<tdalign=left><fontcolor=red>不克不及读取设置文件,大概的毛病是<br>"+"1、设置文件不存在<br>"+
"2、设置文件内容被破坏"+
"</font></td></tr></table>";
}
}
程序中对XML中无子节点的元素如:
<Nettype>net</Nettype>
间接利用以下语句读取。
mXmlDoc.SelectNodes("//Root/Nettype")[0].InnerText;
关于有子节点的元素如:
<IPlink>
<Name>站点1</Name>
<IP>192.8.198.1</IP>
<Sequence>1</Sequence>
</IPlink>
要利用语句以下来读取。
IPlinkchildlNode.ChildNodes[N].InnerText
个中ChildNodes[N]中的[N]为子节点的序号,子节点
<Name>站点1</Name>
的序号应当为[0]。
3、静态创立WEB组件。
先来看程序实例:
privatevoidcreateconfigtable(inttotalnum,int[]sequenceint,string[]namestr,string[]ipstr)
{
//依据失掉丈量点的总数,静态天生输出框
for(inti=1;i<=totalnum;i++)
{
//创立表格
HtmlTableshowtable=newHtmlTable();
showtable.Border=0;
showtable.ID="showtable"+i.ToString();
showtable.BorderColor="#000000";
showtable.CellPadding=4;
showtable.CellSpacing=4;
showtable.Align="center";
myPlaceHolder.Controls.Add(showtable);
//创立一行
HtmlTableRowtRow=newHtmlTableRow();
showtable.Rows.Add(tRow);
//创立第一列(序号)
HtmlTableCelltCell=newHtmlTableCell();
LabelsequenceLabel=newLabel();
sequenceLabel.ID="sequenceLabel"+i.ToString();
sequenceLabel.Text="序号:";
sequenceLabel.Enabled=true;
tCell.Controls.Add(sequenceLabel);
tRow.Cells.Add(tCell);
//创立第二列
tCell=newHtmlTableCell();
sequencedataTB=newTextBox();
sequencedataTB.ID="sequencedataTB"+i.ToString();
sequencedataTB.Text=i.ToString();
sequencedataTB.Width=30;
sequencedataTB.Text=sequenceint[i].ToString();
sequencedataTB.ReadOnly=false;
//创立第三列(称号)
tCell=newHtmlTableCell();
LabelnameLabel=newLabel();
nameLabel.ID="nameLabel"+i.ToString();
nameLabel.Text="称号:";
nameLabel.Enabled=true;
tCell.Controls.Add(nameLabel);
tRow.Cells.Add(tCell);
//创立第四列
tCell=newHtmlTableCell();
nameTB=newTextBox();
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=newHtmlTableCell();
LabelipLabel=newLabel();
ipLabel.ID="ipLabel"+i.ToString();
ipLabel.Text="IP:";
ipLabel.Enabled=true;
tCell.Controls.Add(ipLabel);
tRow.Cells.Add(tCell);
//创立第六列
tCell=newHtmlTableCell();
ipTB=newTextBox();
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=newHtmlTableCell();
LabelipLabel=newLabel();
ipLabel.ID="ipLabel"+i.ToString();
ipLabel.Text="IP:";
ipLabel.Enabled=true;
tCell.Controls.Add(ipLabel);
tRow.Cells.Add(tCell);
//创立第六列
tCell=newHtmlTableCell();
ipTB=newTextBox();
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语法以下:
……
<tr>
<td>
<asp:PlaceHolderid="myPlaceHolder"runat="server"></asp:PlaceHolder>
</td>
</tr>
……
利用该组件的目标是为了定位静态创立的表格。该组件在页面上的地位即为静态创立的表格的地位。
程序中别的一个要申明的中央是静态创立的组件的ID的设定。组件的ID的设定要注重两点:
1、ID号不克不及反复
2、要便于在程序中利用。由于要在程序中利用静态创立的组件,要经由过程该组件的ID来查找。(关于这一点,在“利用静态创立的WEB组件”部分会有较为具体的先容)
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 |
|