回发事件问题

时间:2009-08-30 20:16:42

标签: .net asp.net postback

我正在尝试在我的代码中为一个asp:Button提出一个button_click事件,但是当我点击它的第二次时,它似乎只是回发,而不是第一次,我错过了什么?以下是我的代码

<asp:Button AccessKey="Y" EnableViewState="true"
    Height="25px" runat="server" ID="myButton"
    Text="hello" OnClick="clickit"  />
<asp:TextBox runat="server" AutoPostBack="true" 
    ID="sddf">
</asp:TextBox>

我的代码背后是这样的:

protected void clickit(Object sender, EventArgs e)
{
    Unit myUnit = new Unit(50, UnitType.Pixel);
    myButton.Height = myUnit;
}

现在,当我点击按钮时,它应该回发并将按钮的高度从25px增加到50px,但我必须点击它两次才能执行此操作?我做错了什么?

2 个答案:

答案 0 :(得分:4)

当您单击该按钮时,它会向服务器发送回发,从而重新加载整个页面。这可能需要一些时间。我怀疑你没有等待足够长的回发完成,并在页面加载时再次点击它。

尝试单击一次,然后等待浏览器完全加载。


一般来说,最好在Javascript中在客户端上执行此类操作。这样,您就可以避免进行回发,从而使其更快。在您的情况下,如果您在页面中包含jQuery库,则可以编写以下内容(未经测试):

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" />
<button onclick="$(this).height(50);">Button1</button>

答案 1 :(得分:1)

我希望这能解决你的问题:

function ChangeSize()
{
       var submitButton = document.getElementById('<%= button1.ID %>');
       submitButton.height = 50;
}

<asp:button id="button1" runat = "server" onClick="ChangeSize()">
相关问题