日期:2014-05-18  浏览次数:20471 次

GridView与Image
目前的情况:jpg图片放在一共享文件夹里,共享路径如:\\127.0.0.1\image\
GridView对应的数据源有一个字段存储的相应的图片完整路径,如:\\127.0.0.1\image\123.jpg

现在想实现,点击GridView一个某行自定义列时,在边上的image控件能根据给定的图片完整路径把图片显示出来

<asp:TemplateField HeaderText="图片"><ItemTemplate>
  <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Images/search.gif" OnClick="ShowImage_Click" />  
  </ItemTemplate>
  </asp:TemplateField>

后台代码:
protected void ShowImage_Click(object sender, GridViewRowEventArgs e)
  {
  if (System.IO.File.Exists(Convert.ToString(DataBinder.Eval(e.Row.DataItem, "imgurl"))) == true)
  {
  Image1.ImageUrl = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "imgurl"));
  Image1.DataBind();
  }
  else
  {
  Image1.ImageUrl = "";
  Image1.DataBind();
  }
  }

但是这样写有问题!

请各位不吝赐教!谢谢啦!

------解决方案--------------------

就只是点击显示?

那方法很多啊。。。你可以先就放在一个Image的ImageUrl里。。。Visible设为false

点击用FindControl找到Image控件,改变其Visilble

也可以把图片路径先放在一个隐藏中,点击,先FindControl这个路径控件,得到值,
然后用FindControl找到展示控件,赋值就可以了
------解决方案--------------------
C# code
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="id"  Width="402px"   ShowFooter="true" >
            <Columns>
              <asp:TemplateField >
                   <HeaderTemplate>Product</HeaderTemplate>
                   <ItemTemplate><%#Eval("Product") %></ItemTemplate>
              </asp:TemplateField>
                <asp:TemplateField >
                    <HeaderTemplate>Version</HeaderTemplate>
                    <ItemTemplate> 
                    <asp:HiddenField  ID="hfUrl" runat="server" Value="<%#Eval("imgUrl")%>">"/>
                    <asp:ImageButton ID="ImageButton1"  runat="server" ImageUrl="~/Images/search.gif" OnClick="ShowImage_Click" />   
                    </ItemTemplate>
               </asp:TemplateField>
                 <asp:TemplateField >
                    <HeaderTemplate>Version</HeaderTemplate>
                    <ItemTemplate> <asp:Image ID="test" runat="server" />
                    </ItemTemplate>
               </asp:TemplateField>
           </Columns>
        </asp:GridView>
protected void ShowImage_Click(object sender, GridViewRowEventArgs e)
    {
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            HiddenField hf = GridView1.Rows[i].Cells[0].FindControl("hfUrl") as HiddenField;
            Image im = GridView1.Rows[i].Cells[0].FindControl("test") as Image;
            im.ImageUrl = "../imaghes/"+hf;
        }
    }

------解决方案--------------------
探讨

已经自己解决了这个问题~~~
看来高手们都没空来帮忙啦!!!

------解决方案--------------------
图片路径先放在一个隐藏中,点击,先FindControl这个路径控件,得到值,
然后用FindControl找到展示控件,赋值就可以了
------解决方案--------------------
lz怎么解决的,说下吧,没看出问题来,学习....
------解决方案--------------------