在善良公社项目中,首页的图片显示,不仅要求要根据客户的需要来切换图片,而且还是根据后台来配置,后台要求显示哪些图片那么前台就显示哪些图片。
界面效果如下:下面总共显示了三种图片,可以滑动点击,在上面查看大图
实现这些需求我是这样做的:
在显示图片时利用flash,自己编写了XML文件,Flash读取XML文件,然后设置样式在首页上显示,其XML文件如下:这三张图片是默认的图片
<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo filename="tp-1.jpg" thumbnail="tp-1.jpg" description="" />
<photo filename="tp-2.jpg" thumbnail="tp-2.jpg" description="" />
<photo filename="tp-3.jpg" thumbnail="tp-3.jpg" description="" />
</photos>
当这些齐全的时候只需要在前台写上如下,就可以正常显示了。
<td style="padding: 8px 8px 1px 8px; word-wrap:break-word; width:350px;">
<div id="idPicText"></div>
<table width="99%" height="102" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="top">
<script type="text/javascript">//admin/SystemManager/AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0', 'width', '320', 'height', '300', 'src', 'Photos/photo_xml', 'quality', 'high', 'pluginspage', 'http://www.macromedia.com/go/getflashplayer', 'movie', 'Photos/photo_xml'); //end AC code
</script>
</td>
</tr>
</table>
紧接着就是如何在后台设置了要显示的图片后怎么在前台显示了,这里涉及到动态修改XML的。当"是否显示"字段为N时不再首页显示该图片,当更改为Y时,在首页相应的图片,如下:
此时的XML文件更改为:
<?xml version="1.0" encoding="utf-8"?>
<photos>
<photo filename="tp-1.jpg" thumbnail="tp-1.jpg" description="" />
<photo filename="tp-2.jpg" thumbnail="tp-2.jpg" description="" />
<photo filename="tp-3.jpg" thumbnail="tp-3.jpg" description="" />
<photo filename="../../Photos/1_20140204162259.png" thumbnail="../../Photos/1_20140204162259.png" description="" />
</photos>
如何修改XML文件,如下:
if (EindexImg.IsShow == "N") //如果是否显示更改为N时
{
string strfile = "photos.xml"; //用到的xml文件名
string fileName = context.Server.MapPath(strfile); ; //context.Server.MapPath获取当前aspx页所处的路径
string[] splitByChar = fileName.Split('\\'); //将获取到的路径以\\分割
string FileName = splitByChar[0] + "/" + splitByChar[1] + "/" + splitByChar[2] + "/" + splitByChar[3] + "/" + splitByChar[4] + "/" + splitByChar[5] + "/" + splitByChar[6] + "/" + "Photos/" + splitByChar[9]; //重新构建正确的xml地址
XmlDocument myXml = new XmlDocument();
try
{
myXml.Load(FileName); //加载XML文件
}
catch
{
myXml.Load(FileName);
}
XmlNode rootXml = myXml.SelectSingleNode("photos"); //查询XML文件的根节点("photos")
XmlNode root = myXml.DocumentElement;
XmlNodeList nodeList = root.ChildNodes;
foreach (XmlNode node in nodeList) //遍历子节点
{
if (node.Attributes["filename"].Value == EindexImg.IndexImgURL) //当子节点中的地址与数据库中存入的地址相同
{
node.ParentNode.RemoveChild(node); //删除这个节点,不让图片显示
}
}
myXml.Save(FileName); //保存XML文件
}
既然知道了当为“N”时如何修改XML,那么当为“Y”时就知道如何修改了。