Проблемы с событиями постбэка

Я пытаюсь вызвать событие button_click в своем коде для asp:Button, однако кажется, что обратная передача выполняется только тогда, когда я нажимаю ее во ВТОРОЙ раз, а не в первый, я что-то упустил? Ниже мой код

<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;
}

Теперь, технически, когда я нажимаю кнопку, она должна вернуться и увеличить высоту кнопки до 50 пикселей с 25 пикселей, но мне нужно дважды щелкнуть ее, чтобы сделать это? Что я делаю неправильно?


person Community    schedule 30.08.2009    source источник


Ответы (2)


Когда вы нажимаете кнопку, он отправляет постбэк на сервер, который перезагружает всю страницу. Это может занять некоторое время. Я подозреваю, что вы просто недостаточно долго ждете завершения обратной передачи и снова щелкаете по ней во время загрузки страницы.

Попробуйте щелкнуть ее один раз, а затем дождитесь полной загрузки браузера.


Вообще такие вещи лучше делать на клиенте в 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>
person SLaks    schedule 30.08.2009

Надеюсь, это решит вашу проблему:

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

<asp:button id="button1" runat = "server" onClick="ChangeSize()">
person Zinx    schedule 30.08.2009