asp.net listview弹出图片

时间:2015-06-21 10:46:12

标签: jquery asp.net listview popup

我试图在listview中使用对象数据源弹出图像。

我希望当我们点击该行的图像时会弹出这个图像。

在我的代码中,它始终是弹出窗口中的第一个图像,我点击的图像(因为在编译时弹出“构建自身”而在运行时没有。

func animBall() {
    //This is the general runAction method to make our ball change color
    var animSpeedNow = self.updateAnimSpeed()
    println(animSpeedNow)
    var animBallAction = SKAction.animateWithTextures(ballColorFrames, timePerFrame: animSpeedNow,resize: false, restore: true)

    self.runAction(animBallAction, completion: {() -> Void in
        self.animBall()

    })
}

func updateAnimSpeed() -> NSTimeInterval{
    // Update the animation speed based on the velocity to syncrhonize animation with ball velocity
    var velocX = self.physicsBody!.velocity.dx
    var velocY = self.physicsBody!.velocity.dy

    if abs(velocX) > 0 || abs(velocY) > 0 {
        var veloc = sqrt(velocX*velocX + velocY*velocY)
        var animSpeedNow: NSTimeInterval = NSTimeInterval(35/veloc)
        let minAS = NSTimeInterval(0.017)
        let maxAS = NSTimeInterval(0.190)

        if animSpeedNow < minAS {
            return maxAS
        }
        else if animSpeedNow > maxAS {
            return minAS
        }
        else {
            return animSpeedNow
        }

    }
    else {
        return NSTimeInterval(0.15)
    }
}

感谢 (如果有一个解决方案来做图像按钮并且onclick也会显示弹出窗口。)

非常感谢

1 个答案:

答案 0 :(得分:0)

您遇到的问题是您使用id myPopup引用控件并在同一itemTemplate中添加弹出窗口。对于每个项目,您要添加另一个具有相同id myPopup的div。因此,单击第三个图像将查找id myPopup,它将找到第一个元素。没有办法知道第二个或第三个弹出窗口是必需的。

您可以做的是确保您的ID是唯一的,因此点击第三张图片会查找第三张弹出窗口。 Todo你不应该自己设置id,但是你可以使用ClientID,它将在其中包含行索引的id。 Todo你需要设置runat =&#34; server&#34;对于你的弹出式div,所以你可以使用对它的ClientID的引用(按头部做,所以可以包含拼写错误):

 <a href="#<%# Container.Item.FindControl("myPopup").ClientID %>" data-rel="popup" data-position-to="window">
     <img src='<%# Eval("Image")%>' alt="Skaret View" style="height: 116px; width: 311px">
 </a>

 <div data-role="popup" ID="myPopup" runat="server" data-transition="flip" data-overlay-theme="b">
     <p>This is my picture!</p>
     <a href="#pageone" data-rel="back" class="ui-btn ui-corner-all ui-shadow ui-btn-a ui-icon-delete ui-btn-icon-notext ui-btn-right">Close</a><img src='<%# Eval("Image")%>' style="width: 800px; height: 400px;" alt="Skaret View">
 </div>

我不认为这是最好的解决方案,但它确实解释了您在ASP.Net中关于客户端ID的概念出了什么问题。

备用单个弹出窗口 如果您单击多个图像,我认为您不需要看到多个弹出窗口。如果你总是需要看到你最后一次点击的图像你的概念是好的,但你的弹出窗口的位置不是。 因此,如果您将弹出窗口移出ListView,它只会被添加到页面一次,因此单击将找到单个弹出控件。您只需要使用jQuery在弹出窗口中设置相同的图像。

function SetImageInPopup() {
    //Get the imageUrl from the image inside the hyperlink
    var imageSrc = $("img", this).attr("src");
    //Now find the image in the popup
    var imgInpopup = $("mypopup > img");
    //Now adjust the image src
    imgInPopup.attr("src", imageSrc);
}

<a href="#myPopup" onclick="SetImageInPopup()"

替代jQuery对话框 如果您不需要使用特定的弹出逻辑,您可以查看使用jQuery的对话框并在弹出窗口中显示链接的内容

function ShowDialog() {
    $(this).dialog(); //Specify specific dialog properties for your own dialog layout and behavior
}