ImageButton OnMouseOver调用C#函数

时间:2013-11-10 19:47:11

标签: c# asp.net imagebutton onmouseover

我的图片按钮及其onmouseover操作有问题。

在我的ASPX文件中,我有类似的内容:

<script type="text/javascript">
    function dosth() {
        document.getElementById("btnload").click();
    }
</script>

...

<asp:Panel ID="pnUp" Height="200px" runat="server"></asp:Panel>

...

<asp:Button ID="btnload" runat="server" OnClick="btnload_Click"
    Visible="false" />

...

在我的ASPX .cs文件中,例如:

ImageButton btnImg = new ImageButton();

protected void Page_Load(object sender, EventArgs e)
{
    btnImg.ID = "btnImg";
    btnImg.ImageUrl = "images/imgbutton.png";
    btnImg.CssClass = rblSize.SelectedValue.ToString();
    btnImg.Attributes.Add("OnMouseOver", "dosth();");
    pnUp.Controls.Add(btnImg);
}

protected void btnload_Click(object sender, EventArgs e)
{
    // stuff to do
}

但这不起作用。

您知道如何在onmouseover操作中运行C#函数吗? JavaScript函数dosth()正在执行,但它仍然没有运行click函数。

2 个答案:

答案 0 :(得分:2)

通过JavaScript引用ASP.NET服务器控件的ID时,必须使用控件的ClientID属性。 ClientID属性输出控件的完整客户端ID。

这应该有效:

<script type="text/javascript">
    function dosth() {
        document.getElementById('<%=btnload.ClientID%>').click();
    }
</script>

答案 1 :(得分:1)

您有任何JavaScript错误吗?

我认为您的问题是您使用了错误的ID来查找JavaScript中的<img>标记。

在ASP.NET中,自动生成客户端ID以确保它是唯一的。

您有两种选择:

选项1:ClientIDMode定义中将Static设置为btnload

<asp:Button ID="btnload" runat="server" ClientIDMode="Static"
    OnClick="btnload_Click" Visible="false" />

这样,btnload will的客户端ID为"btnload"

选项2:更改JavaScript以插入生成的客户端ID。

<script type="text/javascript">
function dosth() {
    document.getElementById('<% this.btnload.ClientId %>').click();
}
</script>