当前位置: 代码迷 >> ASP.NET >> GridView与Image,该怎么解决
  详细解决方案

GridView与Image,该怎么解决

热度:2686   发布时间:2013-02-25 00:00:00.0
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怎么解决的,说下吧,没看出问题来,学习....
------解决方案--------------------------------------------------------
  相关解决方案