【发布时间】:2011-04-15 15:59:44
【问题描述】:
在网格视图中,我有一个用于图像的列,使用模板:
<asp:TemplateField HeaderText="Image">
<EditItemTemplate>
<%#GenerateControl(Eval("id").toString) %>
</EditItemTemplate>
<ItemTemplate>
<%#GetImageById(Eval("id"))%>
</ItemTemplate>
</asp:TemplateField>
我想生成一个控件,这取决于图像是否存在。我在后面的代码中用于执行此操作的代码是:
Protected Function GenerateControl(ByVal id As String) As String
Dim scrString As String = "../../Assets/Zalen/" + id + ".jpg"
Dim strImageUrl As String = Me.Server.MapPath(scrString)
If Not File.Exists(strImageUrl) Then
Return "<asp:FileUpload ID=""FileUpload1"" runat=""server"" />"
Else
Return "<asp:button ID=""Button1"" runat=""server"" Text=""Verwijder afbeelding"" OnClick=""DeleteImage(" + id + ")""/>"
End If
End Function
这是由 GridView.Updating 事件调用的方法。
所以,基本上:如果图像存在,我想显示一个按钮,以便用户能够删除图像。如果图像尚不存在(图像基于表的主键(“id”)),那么我想显示一个 FileUpload 控件。
当我运行网站时,这些控件会显示在 HTML 代码中,但它们不会显示在网站本身上。 (即:通过代码可见,而不是视觉)
如何正确地将控件动态呈现到 GridView 中?谢谢
【问题讨论】: