如果是把image的ImageUrl直接写死就可以显示出图片,但是如果从数据库读出地址来就不行!
弹出层的代码如下<style type="text/css">
<!--
*{font-size:12px;font-family:Verdana, Geneva, sans-serif;line-height:14px}
a{color:#039}
a:hover{color:#f60}
.pop{position:absolute;left:40%;top:40%;width:300px;height:100px;background:#eee;border:1px solid #ccc}
 .pop_head{position:relative;height:20px;background:#ccc}
 .pop_head a{position:absolute;right:8px;line-height:20px;color:#000;text-decoration:none}
 .pop_head a:hover{color:#f60;text-decoration:none}
 .pop_body{padding:8px}
-->
</style>  
</head>
<body>
    <form id="form1" runat="server">
    <!--首先设置一个层:-->
<div id="pop" class="pop" style="display:none">
 <div class="pop_head"><a href="javascript:void(0);" onclick="hide('pop')">关闭</a></div>
 <div class="pop_body"><asp:Image ID="Image1" runat="server" /></div>
</div>
<script type="text/javascript">
function show(o){
 var o = document.getElementById(o);
 o.style.display = "";
}
function hide(o){
 var o = document.getElementById(o);
 o.style.display = "none";
}
</script><asp:Button ID="Button1" runat="server" Text="显示图片" OnClientClick="show('pop')" 
                        onclick="Button1_Click" />后台读出url地址的代码--点击显示图片的按钮
DataRowView drv = dt1.Tables[0].DefaultView[0];
Image1.ImageUrl = Convert.ToString(drv.Row["Pro_Pic"]);

解决方案 »

  1.   

    调试一下。可能show('pop')就没有执行,若执行,设置断点看看Image1.ImageUrl可能为空。建议设置一个静态变量用来存储url值。。
      

  2.   

    <div id="pop" class="pop" style="display:none" ruant="server">
     <div class="pop_head"><a href="javascript:void(0);" onclick="hide('pop')">关闭</a></div>
     <div class="pop_body"><asp:Image ID="Image1" runat="server" /></div>
    </div>--点击显示图片的按钮
    DataRowView drv = dt1.Tables[0].DefaultView[0];
    Image1.ImageUrl = Convert.ToString(drv.Row["Pro_Pic"]);
    pop.Attributes.Add("style", "display:block");提交后 OnClientClick="show('pop')"没用,去掉
      

  3.   

    1 检查一下你生成后的IMAGE URL 是否和直接写的一样
    2 有可能是路径问题。Image1.ImageUrl ="../"+ Convert.ToString(drv.Row["Pro_Pic"]);或者把"../"换成"~/"试一下看看
      

  4.   

    路径的可能性很大,弹出层跟读数据库中url有什么关系吗?建议检查下 Response.Write(Convert.ToString(drv.Row["Pro_Pic"]))
      

  5.   

    点击显示图片按钮肯定读出来了图片的地址,但是在弹出层里就是无法显示!我断点看,测试,后台能读出来ImageUrl的地址,但是编译到了前台,image的src却是空的!
      

  6.   


    function show(o){
     var o = document.getElementById(o);
     o.style.display = "";
     return false;
    }
    代码修改成这样 看看
      

  7.   

    如果我把image控件不放在弹出层的div里,而是放在普通的地方,就可以显示的很正常,所以估计是跟这个弹出div层有关,但是是什么原因,又找不到!!!
      

  8.   

    o.style.display = "block";
      

  9.   

    你的页面没有设定EnableViewStates=true或你的img控件没有设置视图状态有效,当一点击按纽页面回发,<asp:Image ID="Image1" runat="server" />以变回src是空值的状态
      

  10.   

    还有一个问题
    <asp:Button ID="Button1" runat="server" Text="显示图片" OnClientClick="show('pop')" 
                            onclick="Button1_Click" />
    你这里点击按纽,首先触发的是客户端事件,即显示层,这时层是显示了但页面还没回发还没有触发服务器羰的按纽事件,图片的地址当然还是空的
    整个思路有问题
      

  11.   

    建议,
    一、首行在Page_load事件里就直接把图片地址取出来,在按纽里只触发客户端事件来显示层
    二、或者通过ajax方式在按纽点击事件中取出图片地址
      

  12.   

    这样应该是不可以的,因为display:none的时候,在页面加载的时候可能就没有把IMG加载进来,所以它没办法获取到数据库的值。
    1.如果这个值是已经在内存中的datatable中获取,是否可以先存在在前台,用隐藏域来保持图片地址。
    2.可以采用动态添加img控件的方式。例如在一个DIV中用innerText属性来添加图片<img>标签。