2012-02-21 85 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

相关问题