javascript如何调用服务器控件?(放大镜效果图),来抢分啊!

wangxiaofeiwuqiao 2009-01-05 04:06:56
我在VS2005上用客户端控件比如image,div等成功做了一个类似佐丹奴商城http://www.e-giordano.com/default.aspx的放大镜效果(完全是客户端控件,没有使用服务器控件),然后我想把这个效果转移到我的商城上,我的商城用的是DataList控件嵌套绑定了服务器控件Image(几乎全部是服务器控件,而且我不想改变),有正,背,左右几个图片。
放大镜部分代码如下:

var srcX; //原图大小
var srcY;
var bigX; //预览窗大小,可以任意设置
var bigY;
var smallX; //缩略图宽度
var smallY;
var viewX; //预览范围
var viewY;
var bl; //缩小比例
var border; //边框

window.onload=function () //加载页面完成后
{
var bigbox = document.getElementById("bigbox"); //放大镜观察层,里面是放大镜观察图
var view = document.getElementById("view"); //移动预览层
var smallpic = document.getElementById("smallpic"); //原图
var bigpic = document.getElementById("bigpic"); //放大镜观察图
//初始设置
srcX = smallpic.width; //原图大小
srcY = smallpic.height;
bigX = 350; //预览窗大小,可以任意设置
bigY = 350;
smallX = 300; //缩略图宽度
smallY = srcY * smallX / srcX;
viewX = bigX / srcX * smallX/2; //预览范围
viewY = bigY / srcY * smallY/2;
bl = srcX / smallX;//缩小比例
border = 2; //边框

bigbox.style.display='none';
view.style.display='none';
smallpic.width=smallX;
smallpic.height=smallY;
bigpic.width=srcX ;
bigpic.height=srcY ;
view.style.width=viewX + 'px';
view.style.height=viewY + 'px';
bigbox.style.borderWidth=border + 'px';

if (window.event)
{
bigbox.style.width=bigX + border*2 - 20;
bigbox.style.height=bigY + border*2 - 20;
}
else
{
bigbox.style.width=bigX + 'px';
bigbox.style.height=bigY + 'px';
}
}
。。。。。。
上面的bigbox,view,smallpic,bigpic如果直接改为服务器控件是肯定不行的,会出错。
应该怎么写才能在不改变服务器控件的前提下实现这个效果呢? 还是这样实现不了?请高手指教,最好有代码贴出。
...全文
605 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
长腿爸爸 2010-03-12
  • 打赏
  • 举报
回复
function dealer(href)
{
alert('aaaa:'+href); // href='aaa'
document.getElementById("<%=txtDealer.ClientID%>").value = href;
//document.getElementById("ctl00_ContentPlaceHolder1_txtDealer").value = href;
alert("<%=txtDealer.Text %>"); //输入旧的值,不是新改变的aaa, why???
return false;
}
怎么还是赋不上值,页面看上去成功,可后台还是没变。
wangxiaofeiwuqiao 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 32 楼 oranrry 的回复:]
你把window.onload=function Onload()的函数方法
在后台的DataList1_ItemDataBound 的事件里面注册 不要在页面上面直接注册
因为使用了DataList控件 你的那些原来的控件都是通过DataList 动态生成的
在页面上是区不到的,后台也是不能直接取得的(因为还没有创建,而且放在DataList里面代表生成的控件不止一个)

如果实在懒得换代码
在DataList1_ItemDataBound 事件里面用
C# codestringscript="function Onload()的代码…
[/Quote]

我试试先
phper2008 2009-01-06
  • 打赏
  • 举报
回复
最主要的原因是你img是放在模板里,生成的html代码是以数字顺序重新给img命名
oranrry 2009-01-06
  • 打赏
  • 举报
回复
你把window.onload=function Onload()的函数方法
在后台的DataList1_ItemDataBound 的事件里面注册 不要在页面上面直接注册
因为使用了DataList控件 你的那些原来的控件都是通过DataList 动态生成的
在页面上是区不到的,后台也是不能直接取得的(因为还没有创建,而且放在DataList里面代表生成的控件不止一个)

如果实在懒得换代码
在DataList1_ItemDataBound 事件里面用

string script = "function Onload()的代码";
Page.ClientScript.RegisterStartupScript(this.GetType(), "", script);

然后取控件的id用

string smallpicid = ”“;
if (e.Item.ItemType == ListItemType.Item)
{
smallpicid = e.Item.FindControl("smallpic").ClientID ..........
}


这样获得
zhxhdean 2009-01-06
  • 打赏
  • 举报
回复
jf.
放大镜的javascript代码我有
wangxiaofeiwuqiao 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 love_study 的回复:]
我有现成的代码用的jquery 实现的,很简单,你要的话联系我,把你的邮箱留下
[/Quote]

放大镜的javascript代码我是有了,问题是怎么放到商城里面去。
zjybushiren88888 2009-01-06
  • 打赏
  • 举报
回复
抢分-.-!
conan19771130 2009-01-06
  • 打赏
  • 举报
回复
mark
liberpc 2009-01-06
  • 打赏
  • 举报
回复
学习学习
wangxiaofeiwuqiao 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 pp_shy 的回复:]
楼主要的效果
http://www.cnblogs.com/cloudgamer/archive/2008/07/21/1247267.html
[/Quote]

比较像这个http://www.e-giordano.com/P1.aspx?TabID=000010&ParentCategory=000001&SType=TAG&SKeyWord=1&Product=01058503001&SelectColor=46&GBy=PLACE&frommaster=1&fromobj=1
starter2009 2009-01-06
  • 打赏
  • 举报
回复
clientID 其他没什么好办法 楼上说的html控件加ruant=sever显然是行不通的
bclzwq 2009-01-05
  • 打赏
  • 举报
回复
用html控件加runat="server"就可以了
love_study 2009-01-05
  • 打赏
  • 举报
回复
我有现成的代码用的jquery 实现的,很简单,你要的话联系我,把你的邮箱留下
bj890 2009-01-05
  • 打赏
  • 举报
回复
id
pp_shy 2009-01-05
  • 打赏
  • 举报
回复
leiyanfei497922730 2009-01-05
  • 打赏
  • 举报
回复
document.getElementById("打开页面点查看源文件看这个控件的ID,再把它填到这里面"); 后面不用写了吧。。。。。
fcxxfcxx 2009-01-05
  • 打赏
  • 举报
回复
学习
空心兜兜 2009-01-05
  • 打赏
  • 举报
回复
UP
学习下
oranrry 2009-01-05
  • 打赏
  • 举报
回复
你把window.onload=function Onload()的函数方法
在后台的DataList1_ItemDataBound 的事件里面写

取控件用下面的方法取

protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item)
{
e.Item.FindControl("smallpic") ..........
}
}



wangxiaofeiwuqiao 2009-01-05
  • 打赏
  • 举报
回复
列出部分:比如在window.onload=function Onload()函数里改成这样:
var view = document.getElementById('<%=view.ClientID%>');
var smallpic = document.getElementById('<%=smallpic.ClientID %>');
。。。。。。

HTML里绑定的:
<asp:DataList ID="DataList1" runat="server" Width="600px" OnItemDataBound="DataList1_ItemDataBound">
<ItemTemplate>
<table style="width: 605px; height: 260px">
<tr>
<td style="width: 400px; height: 525px">
图片:</td>
<td style="width: 500px; height:525px; vertical-align: top; text-align: left;">
<asp:Image ID="smallpic" runat="server" ImageUrl='<%# Eval("GoodsUrl") %>' Width="300px" />
</td>
<td style="width: 400px; height: 525px; vertical-align: top; text-align: left;">
<div id="bigbox" style="width: 300px; height: 400px">
<asp:Image ID="bigpic" runat="server" ImageUrl='<%# Eval("GoodsUrl") %>' /></div>
<div id="view" runat="server" onmousemove="move(event)" onmouseout="out()" >
</div>

</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>

出现的错误就是上面所说的找不到控件名称

加载更多回复(15)

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧