2011-08-02 63 views
6

我正在使用中繼器控件在我的頁面上顯示一些數據。如何在asp.net中繼器控件中獲取項目點擊事件?

中繼器項目模板具有圖像和標籤字段。

我希望當我點擊圖片時,我得到一個包含我的數據項的id字段的事件。

我該如何做到這一點?

實際上,當我點擊圖片時,我想要轉到另一個頁面,想要顯示我的數據項的詳細信息,在中繼器我只是顯示簡短的信息。

我的中繼器看起來是這樣的:

<asp:Repeater ID="itemRepeater" runat="server" OnItemCreated="itemRepeater_ItemCreated" > 

      <ItemTemplate> 
       <tr> 
        <td colspan="2"> 
         <asp:Image ID="phImage" runat="server" ImageUrl='<%#"~/ImageHandler.ashx?id=" + DataBinder.Eval(Container.DataItem, "PhotoID")%>' /> 
        </td> 
        <td> 
         <asp:Label ID="lblImageName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' /> 
        </td> 
       </tr> 
      </ItemTemplate> 
</asp:Repeater> 

我想PhotoID事件當我點擊的形象。

我的照片類看起來是這樣的:

public class PhotoDC 
    {  
     public byte[] ImagebyteArray { get; set; }  
     public string Name { get; set; } 
     public int PhotoID { get; set; } 
    } 

我一直在做的winform編程剛剛起步的網絡,也許是容易的,但我爲努力找到一個解決方案。

我不知何故設法顯示手形光標,當我懸停圖像,雖然。

回答

11

試試這個:

<asp:Repeater ID="itemRepeater" runat="server" OnItemCreated="itemRepeater_ItemCreated" >  
    <ItemTemplate> 
     <tr> 
     <td colspan="2"> 
      <asp:ImageButton ID="phImage" runat="server" ImageUrl='<%#"~/ImageHandler.ashx?id=" + DataBinder.Eval(Container.DataItem, "PhotoID")%>' OnCommand="Image_Click" CommandName="ImageClick" CommandArgument='<%# Eval("PhotoID") %>' /> 
     </td> 
     <td> 
      <asp:Label ID="lblImageName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' /> 
     </td> 
     </tr> 
    </ItemTemplate> 
</asp:Repeater> 

protected void Image_Click(object sender, CommandEventArgs e) 
{ 
    if (e.CommandName == "ImageClick"){ 
     //e.CommandArgument --> photoid value 
     //Do something 
    } 
} 
0

我個人認爲最簡單的方法就是簡單地使用ItemTemplate來生成一個常規的html鏈接,而不是在代碼隱藏方面做任何事情。事情是這樣的:

<asp:Repeater ID="itemRepeater" runat="server" OnItemCreated="itemRepeater_ItemCreated" > 

     <ItemTemplate> 
      <tr> 
       <td colspan="2"> 
        <a href="/Details.aspx?id=<%=DataBinder.Eval(Container.DataItem, "PhotoID")%>"> 
        <asp:Image ID="phImage" runat="server" ImageUrl='<%#"~/ImageHandler.ashx?id=" + DataBinder.Eval(Container.DataItem, "PhotoID")%>' /> 
        </a> 
       </td> 
       <td> 
        <asp:Label ID="lblImageName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' /> 
       </td> 
      </tr> 
     </ItemTemplate> 

我知道這是不是嚴格你問的問題,但恕我直言這是完成任務的最佳方法。

3

您可以使用中繼器控制 的ItemCommand這樣的 -

protected void itemRepeater_ItemCommand(object source, RepeaterCommandEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     if (e.CommandName == "img_Click") // check command is cmd_delete 
      { 
      // get you required value 
      int CustomerID = Convert.ToInt32(e.CommandArgument); 

      //Write some code for what you need 

      } 
     } 
} 
相關問題