1

.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"/>&nbsp;

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

0 に答える 0