我有一个数据列表,其中显示图像的缩略图和一个下载图标,当用户单击下载图标时,系统下载客户端位置的图像。
<asp:DataList ID="dtlSearchDetails" runat="server" OnItemCommand="dtlSearchDetails_ItemCommand" OnItemDataBound="dtlSearchDetails_ItemDataBound">
<ItemTemplate>
<asp:ImageButton runat="server" ID="dtlImageCol" ImageUrl='<%# "~/uploads/thumbnails/" + Eval("ImageName") %>' /><br />
<asp:Label runat="server" ID="dtusage" Text='<%# Eval("usage") %>' Style="color: #CC121B;"></asp:Label><br />
<asp:ImageButton runat="server" ID="dtlImgDownload" CommandName="dtlImgDownload" CommandArgument='<%# Eval("ImageName") %>' ImageUrl="images/download.png" style="height:20px; width:20px;"/>
</ItemTemplate>
</asp:DataList>
一切正常,只是问题是 datalist 被包装在 updatepannel 中,因此为了在用户端下载图像,我需要在 Page_Load 事件上注册控件:
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(dtlImgDownload);
由于在dtlImgDownload
数据列表中,我总是得到一个错误"The name dtlImgDownload doesn't exists in current context."
我尝试了几种方法来查找控件,dtlSearchDetails.FindControl("dtlImgDownload ")
但它总是返回 null。
我也试过
if(dtlSearchDetails.FindControl("dtlImgDownload ") != null)
{
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(dtlSearchDetails.FindControl("dtlImgDownload "));
}
但同样的结果,它始终为空。
请指出我正确的方向。