2012-05-29 57 views
0

我有一個datalist,它顯示圖像的縮略圖和一個下載圖標,當用戶點擊下載圖標時,系統下載的圖像位於客戶端。如何在Page_Load事件中找到位於datalist itemtemplate內的控件?

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

所有的作品也只是問題是,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 ")); 
     } 

但相同的結果,它始終爲空。

請點我到正確的方向。

回答

1

首先,你需要BindDataList。然後在此之後,您將需要遍歷每個DataListItemsDataList

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

這會發現在每個DataListItem

+0

控制貌似代碼是能夠找到的ImageButton,但仍無法能夠註冊它我用這樣的: '如果(dtlSearchDetails.Items.Count> 0){ 的foreach (在dtlSearchDetails.Items的DataListItem LI) { 的ImageButton IMG =(的ImageButton)li.FindControl( 「dtlImgDownload」); ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(img); 休息; } }' – Vishal

+0

沒關係其工作看起來有些其他問題,感謝您的時間了很多蒂姆。 – Vishal