簡體   English   中英

如何在Page_Load事件上找到位於數據列表itemtemplate內的控件?

[英]How to find a control located inside datalist itemtemplate, on a Page_Load event?

我有一個數據列表,其中顯示圖像的縮略圖和其下的下載圖標,當用戶單擊下載圖標時,系統下載位於客戶端位置的圖像。

<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;"/>&nbsp;
                            </ItemTemplate>
                        </asp: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 "));
        }

但是同樣的結果,它總是為空。

請指出正確的方向。

首先,您需要Bind DataList 然后,在此之后,您將需要遍歷DataListItems中的每個DataList

foreach ( DataListItem li in dtlSearchDetails.Items )
{
    ImageButton imgButton = (ImageButton) li.FindControl("dtlImgDownload");
}

這將在每個DataListItem找到控件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM