Проблемы с событиями обратной передачи - PullRequest
0 голосов
/ 31 августа 2009

Я пытаюсь вызвать событие 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;
}

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

Ответы [ 2 ]

4 голосов
/ 31 августа 2009

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

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


В общем, лучше делать такие вещи на клиенте в 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 голос
/ 31 августа 2009

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

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

<asp:button id="button1" runat = "server" onClick="ChangeSize()">
...