Избегайте более одного нажатия кнопки изображения - PullRequest
0 голосов
/ 05 августа 2011

У меня есть gridview, у которого есть кнопка изображения в полях шаблона gridview. Теперь по нажатию кнопки изображения одна новая строка вставляется в таблицу данных и связывается с сеткой.

Но если я снова нажму на кнопку с изображением, вставляется вторая строка (такая же, как и первая), и она снова привязывается к gridview. Как этого избежать?

Спасибо!

Ответы [ 3 ]

1 голос
/ 05 августа 2011

Избегать этого в CodeBehind - неправильный путь, потому что тогда Кнопка будет отключена ПОСЛЕ обратной передачи, что даст вам еще достаточно времени, чтобы нажать ее снова.Единственный способ сделать это - использовать javascript.

Вы бы сделали это так:

var button = document.getElementById('yourButton');
button.disabled = true;
0 голосов
/ 05 августа 2011

Если вы используете валидаторы, после вставки новой строки переинициализируйте элементы управления, используемые для вставки (т.е. tbProductName.Text = String.Empty; ddlTitle.SelectedIndex = 0; и т. Д.).и таким образом валидаторы будут препятствовать повторной отправке тех же данных снова.

Если вставка занимает больше времени на стороне сервера и ваши пользователи должны ждать, используйте JavaScript, чтобы отключить кнопку.После того как сервер завершит операцию, он отправит новый ответ, и вам не нужно его снова включать (предположим, кнопка не отключена на стороне сервера).

0 голосов
/ 05 августа 2011

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

void grdRules_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName=="imagebutton")
    {
      //insert row
      int id = int.Parse(e.CommandArgument.ToString());
      ImageButton imgButton = 
             (ImageButton)grdRules.Rows[id].FindControl("imgButton");      

     imgButton.Visible =false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...