2

ポストバックしたくないことを除いて、通常のように機能させたいボタンがあります。

ユーザーがそれをクリックした場合、次のポストバックでButton Clickイベントを実行したいのですが、その特定のボタンがポストバックできないようにしたいだけです。

私はこれを試しました:

<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return false;" OnClick="ChangeAllBtnClick" />

But it doesn't call the ChangeAllBtnClick after I postback. If I remove the "return false;", then there is postback before I want it.

What do?

4

3 に答える 3

2

最初のクリックを保存する非表示フィールドを作成できます。ユーザーが2回目にクリックする場合は、ajaxリクエストを作成してみてください。

このように、ページにポストバックはありません。

于 2012-09-26T21:21:04.290 に答える
1

奇妙な要求のようです。頭のてっぺんからどうやってやるのかわからない。ポストバックしたときに、ボタンクリックイベントにあったコードを実行するようにコードを構造化することは可能でしょうか?例:

void ChangeAllBtnClick(object o, EventArgs e)
{
   DoStuff();
}

void RealButton_BtnClick(object o, EventArgs e)
{
   DoStuff(); //Executing all the code that would have been run for ChangeAllBtnClick here
   /*
      code for RealButton would be in here...
   */
}

void DoStuff()
{
   //Whatever
}

それがオプションでない場合は、サーバー側のコントロールである非表示フィールドを作成する可能性があります。次に、これをクライアント側のスクリプトから設定し、サーバー側で値を確認できます。

于 2012-09-26T20:46:57.147 に答える
0

次は動作しますか?onclientclick javascriptをfalseを返すように設定して、ポストバックしないようにしますが、その関数で非表示フィールドの値を「1」に設定します。デフォルトは基本的に「0」です。

PageLoadで、非表示フィールドの値を確認します。値が1の場合は、目的のコードを実行して、非表示フィールドの値を0に戻します。

<!------HTML Code------>
<input type="hidden" id="hdnChangeAllFlag  value="0" />
<asp:Button ID="ChangeAllBtn" runat="server" Text="Change All" OnClientClick="return > ChangeAllClicked()" />

<script>
function ChangeAllClicked()
{
$("#hdnChangeAllFlag").val('1');
return false;
}
</script>
''' Server Side Code

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Request("hdnChangeAllFlag")="1" and IsPostback Then
        ''''Y
    End If

End Sub
于 2012-09-26T21:38:05.540 に答える