2012-02-21 74 views
0

我的應用程序是一個圖片庫和一個Repeater控件我列出了縮略圖(這是在一個單獨的文件夾,除了全尺寸的圖像)。當點擊一個縮略圖時,應該在圖像控件「fullSizeImage」中顯示一個滿量程圖像,並且應該創建一個查詢字符串,該字符串(帶有頁面的GET)以全尺寸顯示該特定圖像。創建一個查詢字符串時點擊圖像(asp.net/c#)

查詢字符串的代碼已完成,但問題是我沒有線索將它放在哪裏(創建查詢),因爲HyperLink控件不支持事件點擊。有沒有辦法使用例如Repeater ItemCommand,或者我怎樣才能完成我想要的東西?

謝謝!

從Default.aspx的

<asp:Image ID="fullSizeImage" runat="server" /> 

    <asp:Repeater ID="ImageRepeater" runat="server" DataSourceID="" > 
     <ItemTemplate> 
      <asp:HyperLink ID="ImageHyperLink" NavigateUrl='<%# Eval("Name", "~/Images/{0}") %>' runat="server" CssClass="thumbnails" > 
       <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "~/Images/Thumbnails/{0}") %>' CssClass="thumbnail" /> 
      </asp:HyperLink> 
     </ItemTemplate> 
    </asp:Repeater> 

從後面的代碼:

protected void Page_Load(object sender, EventArgs e) { 

    var directory = new DirectoryInfo(Gallery.PhysicalApplicationPath + "/Images"); 
    var theFiles = directory.GetFiles(); 

    ImageRepeater.DataSource = theFiles; 
    ImageRepeater.DataBind(); 

    var dataName = Request.QueryString["name"]; 
    fullSizeImage.ImageUrl = dataName; 
} 

創建查詢字符串的(我不知道往哪裏放):

string str = ImageUrl; <- the url of the clicked image 
Response.Redirect("default.aspx?name=" + Server.UrlEncode(str); 

回答

2

這工作我

<asp:HyperLink ID="ImageHyperLink" NavigateUrl='<%# "~/default.aspx?name=" + Server.UrlEncode(Eval("Name","~/Images/{0}")) %>' runat="server" CssClass="thumbnails" > 
    <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "~/Images/Thumbnails/{0}") %>' CssClass="thumbnail" /> 
</asp:HyperLink> 
+0

天哪,這只是一個非常棒的解決方案,它非常棒。非常感謝! – holyredbeard 2012-02-21 20:14:47

0

在後面的代碼中,您可以設置綁定到Repeater的ItemDataBound事件的方法。在該方法中,您可以檢索當前文件,找到HyperLink,並將鏈接的NavigateUrl設置爲您正在生成的字符串。像下面這樣:

ImageRepeater.ItemDataBound += new RepeaterItemEventHandler(ImageRepeater_ItemDataBound); 

private void ImageRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    [File] f = (File)e.Item.DataItem; 
    HyperLink ImageHyperLink = (HyperLink)e.Item.FindControl("ImageHyperLink"); 
    string str = f.ImageUrl; 
    ImageHyperLink.NavigateUrl = "default.aspx?name=" + Server.UrlEncode(str); 
} 
+0

感謝很多答案。第一行(ImageRepeater.ItemDataBound + = ...等等)應該放在哪裏? 順便說一句,「[文件] f」引發錯誤信息:「; expected」,以及該行的其餘部分:「無法轉換爲靜態類型'System.IO.File'。你有什麼想法如何解決這個問題? – holyredbeard 2012-02-21 19:55:45

相關問題