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找到展示控件,赋值就可以了
[解决办法]
<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; } }
[解决办法]