.aspx ページのデータリストに asp:ImageButton があります。また、datatlist の外側にあるページに img コントロールがあります。データリストは、単にサムネイルを生成するために使用されます。クリックすると、対応する画像が大きな img コントロールに表示されます。イベントは 1 回発生しますが、直後に別のサムネイルをクリックしようとしても、イベントは再度発生しません。ただし、60 ~ 90 秒待つと、別のサムネイルをクリックすると、イベントが再び発生します。何がそのようなことを引き起こすのか見当がつかず、2日間私を夢中にさせています. 簡単なことだと思いますが、インターネットで答えを探していて、答えが見つからないようです。誰かが助けることができれば、それは大歓迎です!
.aspx ページのボタン コードは次のとおりです。
<img height="15" src="images/1x1.gif"><asp:image id="ProductImage" runat="server" height="209" width="309"/>
<asp:DataList id="MoreColors" runat="server" RepeatColumns="1" >
<ItemTemplate>
<table style: border="0" width="75">
<tr>
<td style: width="75" valign="middle" align="right">
<asp:ImageButton ID="imgBtn" runat="server" ImageUrl='<%# "ProductImages/Thumbs/" + Eval("DetailImage")%>' height="50" Width="50" OnCommand="imgBtn_Click" CommandArgument='<%# Container.ItemIndex %>'/> </a>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
Onclick イベントの分離コードは次のとおりです。
Protected Sub imgBtn_Click(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs)
Dim ib As ImageButton = DirectCast(sender, ImageButton)
ProductImage.ImageUrl = ib.ImageUrl
MoreColors.SelectedIndex = Convert.ToInt32(ib.CommandArgument)
ProductImage.Focus()
End Sub
Page_Load コードは次のとおりです。
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim ProductID As Integer = CInt(Request.Params("ProductID"))
If Not Page.IsPostBack Then
Dim ImageCatalogue As ASPNET.LOVEDAT.ProductsDB = New ASPNET.LOVEDAT.ProductsDB()
MoreColors.DataSource = ImageCatalogue.GetThumbnails(ProductID)
MoreColors.DataBind()
Dim Colorlist As ASPNET.LOVEDAT.ProductsDB = New ASPNET.LOVEDAT.ProductsDB
AvailableColors.DataSource = Colorlist.GetAvailableColors(ProductID)
AvailableColors.DataValueField = "ColorID"
AvailableColors.DataTextField = "ColorName"
AvailableColors.DataBind()
' Obtain Product Details
Dim products As ASPNET.LOVEDAT.ProductsDB = New ASPNET.LOVEDAT.ProductsDB()
Dim myProductDetails As ASPNET.LOVEDAT.ProductDetailsList = products.GetProductDetail(ProductID)
' Update Controls with Product Details
desc.Text = myProductDetails.Description
UnitCost.Text = String.Format("{0:c}", myProductDetails.UnitCost)
ProductName.Text = myProductDetails.ProductName
SKU.Text = myProductDetails.SKU.ToString()
ProductImage.ImageUrl = "ProductImages/" & myProductDetails.ProductImage
addToCart.NavigateUrl = "AddToCart.aspx?ProductID=" & ProductID
ReviewList.ProductID = ProductID
AlsoBoughtList.ProductID = ProductID
End If
End Sub