我在网格中遇到动态图像问题。 我想在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设置不同的网址?
非常感谢
答案 0 :(得分:1)
您可以执行以下操作(您不需要第二个哈希#):
<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;
}
答案 1 :(得分:0)
尝试以下代码
<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>