我展示了一些图片,并且附带了滚动效果
数据控件为 Repeater
效果如下:
<div id="demo" style="margin: 0px; overflow:hidden; width: 740px">
<table height="50" width="750" bgcolor="#f5f5f5">
<tr>
<td id="demo1">
<table cellspacing="0" >
<tr>
<asp:Repeater ID="re" runat="server" onitemcommand="re_ItemCommand">
<ItemTemplate>
<td width="100" height="50">
<a href="#"><img src="<%# Eval("PhotoUrl") %>" border="0" style="width:90px; height:50px"></a>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# Eval("PhotoUrl") %>' Height="50px" Width="88px"/>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</table>
</td>
<td id="demo2"></td>
</tr>
</table>
</div><a>标签 和<imageButton>标签 不能并存 也就是2者只显示一个就可以,因为我做了下测试 所以写了2个标签来比较效果下边是要模式化显示的层:
<div ID="Panel1" runat="server" style="height:200px; width:380px;">
<div id="tu" style="background-color:Green; margin-top:20%;">
<asp:ImageButton ID="ImageButton2" runat="server"
ImageUrl="~/custom/images/6.jpg" />
<asp:ImageButton ID="ImageButton3" runat="server"
ImageUrl="~/custom/images/jiantou.jpg"
/>
</div>
</div>
<input type="hidden" id="hid" runat="server" />这个层 用ModalPopupExtender 来模式化显示
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
TargetControlID="hid" PopupControlID="Panel1" DropShadow="true" CancelControlID="ImageButton2" PopupDragHandleControlID="Panel1" BackgroundCssClass="ModalBackground" >
</cc1:ModalPopupExtender>好了 问题来了
1、如果在Repeater 中的是<ImageButton>控件 那么在Repeater的ItemCommand事件中 用:ModalPopupExtender1.Show(); 这个方法可以控制层的显示 但是 在层中的2个按钮<ImageButton2>,<ImageButton3>都会让这个层隐藏,并且每次点击滚动的图片(也就是Repeater中的<ImageButton>) 都会令页面刷新,也就是说 当图片滚动到第5张的时候 点击某一张图片 则会刷新页面,另图片从新在第一张开始滚动,我想要的效果是 点击图片 页面不刷新,图片该滚滚,不在第一张重新滚。
2、如果在Repeater 中的是<a>标签,那么页面不刷新,图片接茬滚,但是我怎么控制层的模式化显示呢? 即使显示出来了,那么 要如何设置层中的2个按钮 让一个按钮隐藏模式化层,一个按钮做其他事情呢?样式
.ModalBackground
{
background-color:#6699ff;
filter:alpha(opacity=70);
opacity:.7;
}
滚动效果的JavaScript 代码
<script type="text/jscript" language="javascript">
var speed=15
demo2.innerHTML=demo1.innerHTML
function Marquee(){
if(demo2.offsetWidth-demo.scrollLeft<=0)
demo.scrollLeft-=demo1.offsetWidth
else{
demo.scrollLeft++
}
}
var MyMar=setInterval(Marquee,speed)
demo.onmouseover=function() {clearInterval(MyMar)}
demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
</script>
数据控件为 Repeater
效果如下:
<div id="demo" style="margin: 0px; overflow:hidden; width: 740px">
<table height="50" width="750" bgcolor="#f5f5f5">
<tr>
<td id="demo1">
<table cellspacing="0" >
<tr>
<asp:Repeater ID="re" runat="server" onitemcommand="re_ItemCommand">
<ItemTemplate>
<td width="100" height="50">
<a href="#"><img src="<%# Eval("PhotoUrl") %>" border="0" style="width:90px; height:50px"></a>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# Eval("PhotoUrl") %>' Height="50px" Width="88px"/>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</table>
</td>
<td id="demo2"></td>
</tr>
</table>
</div><a>标签 和<imageButton>标签 不能并存 也就是2者只显示一个就可以,因为我做了下测试 所以写了2个标签来比较效果下边是要模式化显示的层:
<div ID="Panel1" runat="server" style="height:200px; width:380px;">
<div id="tu" style="background-color:Green; margin-top:20%;">
<asp:ImageButton ID="ImageButton2" runat="server"
ImageUrl="~/custom/images/6.jpg" />
<asp:ImageButton ID="ImageButton3" runat="server"
ImageUrl="~/custom/images/jiantou.jpg"
/>
</div>
</div>
<input type="hidden" id="hid" runat="server" />这个层 用ModalPopupExtender 来模式化显示
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server"
TargetControlID="hid" PopupControlID="Panel1" DropShadow="true" CancelControlID="ImageButton2" PopupDragHandleControlID="Panel1" BackgroundCssClass="ModalBackground" >
</cc1:ModalPopupExtender>好了 问题来了
1、如果在Repeater 中的是<ImageButton>控件 那么在Repeater的ItemCommand事件中 用:ModalPopupExtender1.Show(); 这个方法可以控制层的显示 但是 在层中的2个按钮<ImageButton2>,<ImageButton3>都会让这个层隐藏,并且每次点击滚动的图片(也就是Repeater中的<ImageButton>) 都会令页面刷新,也就是说 当图片滚动到第5张的时候 点击某一张图片 则会刷新页面,另图片从新在第一张开始滚动,我想要的效果是 点击图片 页面不刷新,图片该滚滚,不在第一张重新滚。
2、如果在Repeater 中的是<a>标签,那么页面不刷新,图片接茬滚,但是我怎么控制层的模式化显示呢? 即使显示出来了,那么 要如何设置层中的2个按钮 让一个按钮隐藏模式化层,一个按钮做其他事情呢?样式
.ModalBackground
{
background-color:#6699ff;
filter:alpha(opacity=70);
opacity:.7;
}
滚动效果的JavaScript 代码
<script type="text/jscript" language="javascript">
var speed=15
demo2.innerHTML=demo1.innerHTML
function Marquee(){
if(demo2.offsetWidth-demo.scrollLeft<=0)
demo.scrollLeft-=demo1.offsetWidth
else{
demo.scrollLeft++
}
}
var MyMar=setInterval(Marquee,speed)
demo.onmouseover=function() {clearInterval(MyMar)}
demo.onmouseout=function() {MyMar=setInterval(Marquee,speed)}
</script>
看了半天 2种思路
1.js实现 简单很
2.web服务器控件实现 依然简单
我只说web 给个思路就行了 点击肯定回传 回传肯定刷新重来 我不知道你的图片哪里来的
第一次加载 放进list里面存进viewstate里面
点击之后imagebutton做2件事 将图片标记id存进list里面 第二件事打开模式div
在回传中(ispostback)写上从标记id开始从新图片循环
在加上ajax看看 如果有问题在看着改吧
你应该写个方法将list内的元素从所标记的id开始重新排序
然后repeater重新绑定数据源这样应该可以了