JS修改img的src

xy3212158 2013-01-02 03:00:47
现在有个项目要能实时更新数据。
数据库有个视图的字段里面的值(status)是固定的,1==向上运行,2==向下运行,0==停止,5==不能确定
我是用repeater把这个数据绑定在td里。
现在我要把 字段的值 1,2,0,5 4个数据转换成 不同的图片1.gif 2.gif 0.gif 5.gif. 应该怎么做?
我自己的想法是在数据查询出来dataset里把status的值 赋值给变量aa,再判断的aa的值,然后路径赋值给 bb ,前台,<td>里面的src=<%=bb%>.结果出来的所有图片都是一样的,也就是bb只取了dataset里面的第一条。
求大神告知该怎么做, JS 可以实现吗? 求实例,谢谢!
...全文
411 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
xy3212158 2013-01-07
  • 打赏
  • 举报
回复
问题已经解决 <%#floor(Eval("floor").ToString())%> 后台定义方法判断的。
nickppa 2013-01-03
  • 打赏
  • 举报
回复
sql中直接把那一列给拼出来了select status + '.gif' as status ......
whowhen21 2013-01-03
  • 打赏
  • 举报
回复
<%# eval("status","{0}.gif") %>
  • 打赏
  • 举报
回复
如果说那几行反射代码有点让人头晕,那么可以修改一下简单一些:
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    public int i;

    protected string GetUrl(int n)
    {
        i = n;
        if (i % 2 == 0)
            return "http://t2.gstatic.com/images?q=tbn:ANd9GcSTwunS5WG8coDuWrl4uXkqRpnwYjPzsa5TDzWVBIfCRYYmYV_mgpmpn34";
        else
            return "http://t2.gstatic.com/images?q=tbn:ANd9GcSvv7bpkq4RbhnU-HsrwWNLpgUT5T-zGT_80WhJnIEfz8LsC4mnN9Fc7s8";
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <table border="1">
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
            <HeaderTemplate>
                <tr>
                    <th>field_1
                    </th>
                    <th>field_2
                    </th>
                </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:Image runat="server" ImageUrl='<%# GetUrl((int)Eval("i")) %>' />
                        <br />
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("i") %>' />
                    </td>
                    <td>
                        <img src='<%= GetUrl(i) %>' alt="" /><br />
                        <%= i %>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                <tr>
                    <td colspan="2">比较一下吧!
                    </td>
                </tr>
            </FooterTemplate>
        </asp:Repeater>
    </table>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="TestRepeater" SelectMethod="Select"></asp:ObjectDataSource>
</body>
</html>
除这个反射(已经删除)以外,这个demo还有什么不是最基本的?实在就是可以“直接抄袭用”的了。
xy3212158 2013-01-02
  • 打赏
  • 举报
回复
引用 11 楼 sp1234 的回复:
我的demo总共就两个字段,一个是正确地绑定了i并且出现图片,另一个是你的代码。 都写成这样的demo了,你还要我给你写什么呢?
我按照你的demo写了,调试提示DataBinding:“System.Data.DataRowView”不包含名为“xx”的属性。 repeater可以同时绑2个数据源?object 数据源和 DataSource数据源?
  • 打赏
  • 举报
回复
我的demo总共就两个字段,一个是正确地绑定了i并且出现图片,另一个是你的代码。 都写成这样的demo了,你还要我给你写什么呢?
xy3212158 2013-01-02
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
不要用“代码中的数据库返回值是否有url字段”来作为目标。看懂程序最要紧。
绕了一个圈,可是我问题还没解决,我真有点急,这点问题弄2天了,我承认我基础不扎实,对.net机制也不是深入了解,您能先帮我解决这个问题吗? 有空我会去巩固基础知识的,求大神先帮我整整。
  • 打赏
  • 举报
回复
不要用“代码中的数据库返回值是否有url字段”来作为目标。看懂程序最要紧。
  • 打赏
  • 举报
回复
我给你的demo里也没有什么url字段,只有一个叫做i的整数字段!
xy3212158 2013-01-02
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
如果不学习asp.net,那么很容易退回到低级的“循环代码”的那种编程上。 如果学习asp.net的机制,可以参考:http://bbs.csdn.net/topics/390208009
谢谢你的demo. 我知道<%= %>跟<%# %>的区别, 可是数据库里面没那个url字段,我能想到的只有<%=%>.
  • 打赏
  • 举报
回复
如果不学习asp.net,那么很容易退回到低级的“循环代码”的那种编程上。 如果学习asp.net的机制,可以参考:http://bbs.csdn.net/topics/390208009
  • 打赏
  • 举报
回复
using System;
using System.Collections;
using System.Linq;

public class TestRepeater
{
    public IEnumerable Select()
    {
        var rnd = new Random();
        return from n in Enumerable.Range(0, 10)
               select new { i = rnd.Next() };
    }
}
  • 打赏
  • 举报
回复
引用 3 楼 xy3212158 的回复:
引用 1 楼 fangxinggood 的回复:你应该做个循环... 比如用 <% while(...) %> 我就是没做循环所以才把src都改成一种, 跪求大神指导怎么循环改掉!
<%= %>跟<%# %>的区别,这是太基本的概念,没有什么代码给你抄。 如果你想了解asp.net的机制,我给你写了一个Demo,自己理解吧:
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    public int i;

    protected string GetUrl(int i)
    {
        if (i % 2 == 0)
            return "http://t2.gstatic.com/images?q=tbn:ANd9GcSTwunS5WG8coDuWrl4uXkqRpnwYjPzsa5TDzWVBIfCRYYmYV_mgpmpn34";
        else
            return "http://t2.gstatic.com/images?q=tbn:ANd9GcSvv7bpkq4RbhnU-HsrwWNLpgUT5T-zGT_80WhJnIEfz8LsC4mnN9Fc7s8";
    }

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            var x = e.Item.DataItem;
            var t = x.GetType();
            var p = t.GetProperty("i");
            i = (int)p.GetValue(x, null);
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <table border="1">
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1" OnItemDataBound="Repeater1_ItemDataBound">
            <HeaderTemplate>
                <tr>
                    <th>field_1
                    </th>
                    <th>field_2
                    </th>
                </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:Image runat="server" ImageUrl='<%# GetUrl((int)Eval("i")) %>' />
                        <br />
                        <asp:Label ID="Label1" runat="server" Text='<%# Eval("i") %>' />
                    </td>
                    <td>
                        <img src='<%= GetUrl(i) %>' alt="" /><br />
                        <%= i %>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                <tr>
                    <td colspan="2">比较一下吧!
                    </td>
                </tr>
            </FooterTemplate>
        </asp:Repeater>
    </table>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" TypeName="TestRepeater" SelectMethod="Select"></asp:ObjectDataSource>
</body>
</html>
xy3212158 2013-01-02
  • 打赏
  • 举报
回复
引用 1 楼 fangxinggood 的回复:
你应该做个循环... 比如用 <% while(...) %>
我就是没做循环所以才把src都改成一种, 跪求大神指导怎么循环改掉!
xy3212158 2013-01-02
  • 打赏
  • 举报
回复
引用 1 楼 fangxinggood 的回复:
你应该做个循环... 比如用 <% while(...) %>
怎么循环。。。,我用ajax也写了,把id一样的都改了, 我现在就是不知该怎么循环了。。。
机器人 2013-01-02
  • 打赏
  • 举报
回复
你应该做个循环... 比如用 <% while(...) %>

62,046

社区成员

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

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

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

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