搜狐首页 - 新闻 - 体育 - 娱乐 - 财经 - IT - 汽车 - 房产 - 女人 - 短信 - 彩信 - 校友录 - 邮件 - 搜索 - BBS - 搜狗 
搜狐首页 >> IT频道_搜狐网站 >> 数码天下_搜狐IT >> 网狐教程-搜狐IT >> 程序开发-网狐教程-搜狐IT >> 其他
保存美丽记忆 用ASP.NET创建网络相册
IT.SOHU.COM  2004-07-12 10:48  作者: 廖煜嵘  转自: 天极网
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭

  在上面的代码中,使用变量imgindex来表示当前浏览的是第几张图片,刚开始时候N=0,则获得images数组中的第一个变量,也即第一张图片,之后每次读取该变量值,则可以知道当前浏览的是第几张图片。

  而为了实现“下一张,上一张”的功能,往窗体增加两个Hyperlink链接控件,并添加以下代码

Sub Page_Load(sender as Object, e as EventArgs)
...

If imgIndex > 0 then
 lnkPrev.NavigateUrl = "Default.aspx?N=" & imgIndex - 1
End If

If imgIndex < images.Length - 1 then
 lnkNext.NavigateUrl = "Default.aspx?N=" & imgIndex + 1
End If
...
End Sub

  HTML 部分代码

<asp:HyperLink runat="server" id="lnkPrev" Text="< Previous" /> |
<asp:HyperLink runat="server" id="lnkNext" Text="Next >" />

  上面代码比较容易理解,当点下一张,上一张的链接时,参数N的值加1,或者减1。

  最后,为了实现比较直观的效果,我们放置一个datalist控件,其中显示图象文件夹下的所有文件,每当浏览一张新的图片时,则将当前正在浏览的图片的名称以链接的形式加亮显示,代码如下:

Sub Page_Load(sender as Object, e as EventArgs)
 ...

 dlIndex.DataSource = images
 dlIndex.DataBind()
End Sub

Sub dlIndex_ItemDataBound(sender as Object, e as DataListItemEventArgs)
 If e.Item.ItemType = ListItemType.Item OrElse _
  e.Item.ItemType = ListItemType.AlternatingItem then
  'Get the Hyperlink
   Dim hl as HyperLink = CType(e.Item.FindControl("lnkPic"), HyperLink)

  'Set the Text and Navigation properties
  hl.Text = Path.GetFileNameWithoutExtension(_
   DataBinder.Eval(e.Item.DataItem, "Name").ToString()) & _
   " (" & _
    Int(DataBinder.Eval(e.Item.DataItem, "Length") / 1000) & _
   " KB)"
  hl.NavigateUrl = "Default.aspx?N=" & e.Item.ItemIndex
 End If
End Sub

  HTML部分代码

<asp:DataList runat="server" id="dlIndex" OnItemDataBound="dlIndex_ItemDataBound"
RepeatColumns="3">
<ItemTemplate>
<li><asp:HyperLink runat="server" id="lnkPic" /></li>
</ItemTemplate>
</asp:DataList>

  在上面的代码中,在DATALIST的onitemdatabound事件中,首先判断当前触发的项目是否是列表项listitemtype或者是交替项AlternatingItem,如果是的话,则动态生成链接hl,设置hl的值为当前正在浏览图象的文件名,并且注明了文件的大小,设置其链接的地址为当前浏览图象的地址,这样,用户可以直接点要浏览的图片了,不一要通过上一张,下一张的链接来实现。

  最后给出运行的一个例子(http://aspnet.4guysfromrolla.com/London/)和全部代码:

<%@ Import Namespace="System.IO" %>
<script runat="server" language="VB">
Sub Page_Load(sender as Object, e as EventArgs)
 Dim dirInfo as New DirectoryInfo(Server.MapPath(""))
 Dim images() as FileInfo = FilterForImages(dirInfo.GetFiles())

 Dim imgIndex as Integer = 0

 If Not Request.QueryString("N") is Nothing AndAlso IsNumeric(Request.QueryString("N")) then
  imgIndex = CInt(Request.QueryString("N"))
 End If

 currentImgTitle.Text = "You are Viewing: " & _
  Path.GetFileNameWithoutExtension(images(imgIndex).Name) & _
  " (" & imgIndex + 1 & " of " & images.Length & ")"
  currentImg.ImageUrl = Path.GetFileName(images(imgIndex).Name)

  If imgIndex > 0 then
   lnkPrev.NavigateUrl = "Default.aspx?N=" & imgIndex - 1
  End If

  If imgIndex < images.Length - 1 then
   lnkNext.NavigateUrl = "Default.aspx?N=" & imgIndex + 1
  End If

  dlIndex.DataSource = images
  dlIndex.DataBind()
End Sub

Function FilterForImages(images() as FileInfo) as FileInfo()
 Dim newImages as New ArrayList(images.Length)

 Dim i as Integer
 For i = 0 to images.Length - 1
  If Path.GetExtension(images(i).Name) = ".jpg" OrElse _
   Path.GetExtension(images(i).Name) = ".jpeg" OrElse _
   Path.GetExtension(images(i).Name) = ".png" OrElse _
   Path.GetExtension(images(i).Name) = ".gif" then
    newImages.Add(images(i))
  End If
 Next

 Return CType(newImages.ToArray(GetType(FileInfo)), FileInfo())
End Function

Sub dlIndex_ItemDataBound(sender as Object, e as DataListItemEventArgs)
 If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType =   ListItemType.AlternatingItem then
  Dim hl as HyperLink = CType(e.Item.FindControl("lnkPic"), HyperLink)

  hl.Text = Path.GetFileNameWithoutExtension(DataBinder.Eval(e.Item.DataItem, "Name").ToString()) & _
  " (" & Int(DataBinder.Eval(e.Item.DataItem, "Length") / 1000) & " KB)"
  hl.NavigateUrl = "Default.aspx?N=" & e.Item.ItemIndex
 End If
End Sub
</script>

<HTML>
<HEAD>
 <STYLE TYPE="text/css">
  body { font-family:Verdana;font-size: medium;}
  .ImageTitle { font-weight:bold; font-size:large;}
  .index {font-size: small;}
  .NavLink { background-color: yellow; font-weight: bold; }
 </STYLE>
</HEAD>
<BODY>

<center>
<asp:Label runat="server" id="currentImgTitle" CssClass="ImageTitle" /><br />
<asp:Image runat="server" id="currentImg" />
<asp:HyperLink runat="server" CssClass="NavLink" id="lnkPrev" Text="< Previous" /> |
<asp:HyperLink runat="server" CssClass="NavLink" id="lnkNext" Text="Next >" />
<asp:DataList runat="server" id="dlIndex" OnItemDataBound="dlIndex_ItemDataBound"
RepeatColumns="3" CssClass="index">
<ItemTemplate>
<li><asp:HyperLink runat="server" id="lnkPic" /></li>
</ItemTemplate>
</asp:DataList>
</center>
</BODY>
</HTML>
上一页 [1] [2] 
页面功能 【我来说两句】【我要“揪”错】【推荐】【字体: 】【打印】 【关闭




ChinaRen - 搜狐招聘 - 网站登录 - 帮助中心 - 设置首页 - 广告服务 - 联系方式 - 保护隐私权 - About SOHU - 公司介绍
Copyright © 2005 Sohu.com Inc. All rights reserved. 搜狐公司 版权所有

相关链接
  • 软件教程:ASP.NET中实现模版的动态加载(06/18 10:39)
  • 软件教程:ASP.NET中实现模版的动态加载(06/18 10:36)
  • 北京助飞企业E化 ASP应用示范工程启动大会召开(04/22 19:12)
  • ASP编程入门进阶之四:内置对象Request(04/08 16:52)
  • ASP编程入门进阶之四:内置对象Request(04/08 16:52)
  • ASP编程入门进阶之四:内置对象Request(04/08 16:52)
  • ASP编程入门进阶之四:内置对象Request(04/08 16:42)
  • ASP编程入门进阶之三:接触脚本程序(04/01 18:34)
  • ASP编程入门进阶之三:接触脚本程序(04/01 18:34)
  • ASP编程入门进阶之三:接触脚本程序(04/01 18:34)

  •  ■ 我来说两句
    用  户:        匿名发出:
    请各位遵纪守法并注意语言文明。
     
    *经营许可证编号:京ICP00000008号
    *《互联网电子公告服务管理规定》
    *《全国人大常委会关于维护互联网安全的规定》
    短信内容:
    手 机
    自写包月5分钱/条 更多>>
    搜狐天气为你抢先报! 魔力占卜姻缘一线牵!
    金币不是赚的是抢的! 爱情玄机任由你游戏!
    猪八戒这样泡到紫霞! 帅哥一定要看的宝典!
    你受哪颗星星的庇护? 萨达姆最新关押照片!
    精彩彩信
    [和弦]欧若拉 一生有你
    沧海一声笑
    [音效]挪威的森林
    爆铃 MP3 G点图 动画
    [和弦]童话 你到底爱谁
    [原唱]一千年以后 断点
    [爆笑音效]赚钱拉 野花
    [串烧]张韶涵 潘玮柏
    精彩短信
    [和弦]小薇 好心分手
    [音效]当当当当 忘记


    搜狐商城
    ·家电|品牌风扇新品热销
    ·音乐|秦海璐幸福回味
    ·图书|《眼镜蛇事件》
    更多...