2012-03-12 4 views
3

Я хотел бы отключить отправку после события onClick на кнопке.Отключить отправку по кнопке asp.net Нажмите

Я провел некоторое исследование онлайн, и большинство из них используют onClientClick и используют javascript. Есть ли способ вызвать функцию asp.net «btnCommit_Click» в onClick вместо использования onclientclick и использования javascript?

Если нет, то как я могу включить функцию asp.net с javascript?

<asp:Button ID="btnCommit" runat="server" Text="Save" TabIndex="5" 
    onclick="btnCommit_Click" /> 

ОБНОВЛЕНО У меня есть GridView, который содержит флажки, когда пользователь делает их изменения и нажмите на «кнопку Сохранить» Пост Назад происходит и я потеряю все выборы, сделанные флажки I думал о отключении обратной передачи в OnClick. Событие кнопки решило бы этот вопрос ...

+0

Я не понимаю, что именно вы пытаетесь сделать. Вы хотите, чтобы кнопка была доступна для кликов и отключила несколько кликов, чтобы вы могли обеспечить только один обратный вызов или вы хотите, чтобы функция обратной передачи была отключена для кнопки целиком? –

+0

@Brettski, No its not ... –

+0

@JoelEtherton, у меня есть GridView с полными галочками, поэтому, когда вы нажимаете на btnCommit, если он возвращает сообщения, я теряю GridView и все флажки ... –

ответ

0

У меня есть GridView, который содержит флажки, когда пользователь делает их изменения и нажмите на «кнопку Сохранить» Пост Назад происходит и я освобождаю всех выборов, сделанных флажки

Вы должны держать под Page_LoadPage.IsPostback во время значения является ложным, чтобы, как показано ниже ..

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     //Your code 
    } 
} 

Это не приведет к отключению выбора сетки сетки после нажатия кнопки.


Ваш GridView EnableViewState must be True


Ваши поля шаблона должны быть дизайнером странице

+0

То, что у меня уже есть. Но во время нажатия кнопки после перезагрузки Page_Load и попадания в событие нажатия кнопки он теряет gridview. –

+0

Могу ли я увидеть код привязки gridview и gridview HTML? – Pankaj

+0

и что происходит при нажатии кнопки? вы привязываете данные сетки к нулю? – Pankaj

3

Я точно не понял, чего вы пытаетесь достичь. Но если вы хотите, чтобы и js и серверная сторона добавляли кнопку asp.net, используйте OnClientClick и Onclick вместе. если вы хотите отменить обратную передачу, верните false в функцию js OnClientClick. Таким образом, серверное событие OnClick никогда не будет вызвано. в противном случае верните true и произойдет обратная передача.
Update:
На основе комментариев и обновлении, если вы хотите, чтобы сохраняться состояние флажков в вашем GridView, вы должны избегать перезаписи все, что может повлиять на вас состояния контролирует в случае Page_Load. Это просто означает, что вы должны проверить (IsPostback) в событии Page_Load, и если это правда, вы ничего не должны делать в своих элементах пользовательского интерфейса или потеряете свои состояния.

+0

Есть ли способ, чтобы событие OnClick сразу же исчезло без загрузки page_load ... У меня есть GridView, полный флажков, и когда пользователь нажимает кнопку сохранения, он переходит к функции onClick, где затем данные сохраняются в база данных ... Что происходит в данный момент, если пользователь нажимает кнопку сохранения, то страница_Load загружается снова, и все выбранные флажки удаляются ... –

+1

Я не уверен, но я * думаю * вы можете сохранить статус флажка с viewstate. Но если viewstate включен, то, к сожалению, это злая часть asp.net: жизненный цикл страницы. Вы можете попробовать использовать ajax, если вам не нужна полная обратная передача. – Kamyar

+0

Затем вы должны установить флажки (и, возможно, gridview databind etc) в pageload внутри оператора if if! (! IsPostBack) {} ", чтобы флажки устанавливались только при загрузке первой страницы, а не во время обратной передачи. См. Раздел использования -> http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx – Simon

0

Хотя вы можете использовать VBScript только с Internet Explorer (я не верю, что другие браузеры поддерживают его), это считается плохой практикой. Чтобы запустить VB/C# .net, вам нужно выполнить какой-либо обратный вызов/обратный вызов на сервер. Кроме этого, используйте Javascript.

1

Похоже, что ваша проблема не связана с настройкой привязки и настройкой страницы внутри проверки на загрузку первой страницы.

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback.aspx

private void Page_Load() 
{ 
    if (!IsPostBack) 
    { 
     // Do your databinding etc here to stop it occuring during postback 
    } 
} 
+0

Я уже настроил этот способ, но он все еще не может получить флажки после того, как он попадает в нажмите кнопку Click. –

+0

После того, как вы нажмете щелчок, вам нужно снова вызвать функцию привязки данных, чтобы заполнить gridview. У меня часто будет функция под названием SetPageData() - вызвана в проверке pageload, а затем вызывается после нажатия кнопки и принятия некоторых действий. – Simon

+0

Во время начальной загрузки страницы я вызываю функцию gridDataBind(), которая вызывает получение данных из базы данных и автоматически генерирует флажки с выбором по умолчанию. Как только пользователь вносит изменения в эти выборы i, чем текущий выбор, он будет снова сохранен в базе данных. –

0

Dont использовать Autopostback=true для любых элементов формы, если вы хотите отправить данные формы функции на стороне сервера

* Форма Страница *

asp:Button ID="btn" runat="server" Text="Post Scrap" OnClick="btn_Click" 

* стороне сервера *

Sub btn_Click() 

// здесь код

End Sub 
0

В большинстве моих случаев, что я делаю, это преобразовать кнопку на

 <input type='button' /> 

, так что я могу получить к нему доступ через javascript или jquery. Возможно, это не так.

0

Если вы не хотите загружать страницу или пересылать страницу при нажатии кнопки asp, вам просто нужно изменить свойство CausesValidation на false.

+0

более подробно описывают пример кода –

Смежные вопросы