2014-06-10 31 views
0

我在網格中的動態圖像有問題。 我想爲HiddenField中的每個不同Id顯示不同的圖像。基於HiddenField的GridView中的動態圖像

的代碼是:

<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

嘗試下面的代碼

<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> 
+0

是的,它的工作!非常感謝!此外,我用它與四個案件和四個圖像,它的工作原理! Eval(「Id」)。ToString()。Trim()==「1」?「〜/ Images/one.png」:(Eval(「Id」)。ToString()。Trim()==「2 「?」 〜/圖像/ two.png 「:(的eval(」 ID 「)。的ToString()。修剪()==」 3 「?」 〜/圖像/ three.png 「:(的eval(」 ID「) ?的ToString()修剪()== 「4」 「〜/圖像/ four.png」: 「〜/圖像/ error.png」))) – user1938352

1

你可以做以下的(你不需要第二個散列#):

<asp:Image ID="image" runat="server" ImageUrl = '<%# test(Eval("Id")) %>' /> 

或者,如果你想改變它的每一行,上RowDataBound事件GridView控件做:

if(e.Row.Rowtype == DataControlType.DataRow)  
{ 
    Image imgage = (Image)e.Row.FindControl("Image");  
    image.IamgeURl = //your URL; 
} 
相關問題