基于HiddenField的GridView动态图像
本文关键字:动态 图像 GridView HiddenField 基于 | 更新日期: 2023-09-27 18:08:12
我在网格中有一个动态图像的问题。我想在HiddenField中为每个不同的Id可视化不同的图像。
代码是:
<asp:GridView ID="GridViewExample" runat="server" CellPadding="2" >
<Columns>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:HiddenField ID="HiddenId" runat="server" Value='<%#Bind("id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="ImageButtonLink" runat="server">
<asp:Image ID="image" runat="server" ImageUrl='DYNAMIC_URL' />
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
我尝试了ImageUrl中的一个方法。问题是我使用了ImageUrl="<%#test(<%#Bind("id") %>)%>"
,它不起作用,因为我使用了两个<%#
,它读取一个。
测试的代码是(当然Id是int型):
protected string test(int x) {
if(x == 1)
return "~/Images/black.png";
else
return "~/Images/white.png";
}
如何为不同的Id设置不同的url ?
非常感谢
您可以执行以下操作(不需要第二个哈希值#):
<asp:Image ID="image" runat="server" ImageUrl = '<%# test(Eval("Id")) %>' />
或者如果你想为每一行更改它,在gridview的RowDataBound事件上做:
if(e.Row.Rowtype == DataControlType.DataRow)
{
Image imgage = (Image)e.Row.FindControl("Image");
image.IamgeURl = //your URL;
}
试试下面的代码
<asp:GridView ID="GridViewExample" runat="server" CellPadding="2">
<Columns>
<asp:TemplateField Visible="False">
<ItemTemplate>
<asp:HiddenField ID="HiddenId" runat="server" Value='<%#Bind("id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="ImageButtonLink" runat="server">
<asp:Image ID="image" runat="server" ImageUrl='<%# Eval("id").ToString().Trim()=="1"?"~/Images/black.png":"~/Images/white.png" %>' />
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>