2011-08-05 19 views
-1

私はgridviewのテンプレートフィールドの画像ボタンを持つgridviewを持っています。画像ボタンをクリックすると、新しい行がデータテーブルに挿入され、グリッドビューにバインドされます。複数の画像ボタンをクリックしないでください

もう一度イメージボタンをクリックすると、2番目の行が挿入され(最初の行と同じです)、再度gridview.Howにバインドされます。

ありがとうございます!

+0

あなたは私はこれがあなたがイメージボタンをクリックしたときに呼び出すでしょうGridViewの –

+0

でイベントをバインドする必要があります。もしあなたの最後に作業フィンがないことを確認しなければならない場合は、 –

+0

でイベントをバインドされているグリッドビュー –

答えて

0

これを避けるには、ボタンを無効にするか、クリックした後に麻薬を有効にするか、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; 
    } 
} 
+0

コードが動作しません!デバッガはイベントに行きません –

+0

@ Xor power - グリッドビューでイベントをバインドする必要があります –

+0

私はイベントをgridviewにバインドしました –

0

もしバリデータを使用している場合は、新しい行を挿入するために使用されるコントロール再初期化挿入された後(すなわちtbProductName.Text = String.Emptyを; ddlTitle.SelectedIndex = 0;など)。このようにしてバリデーターは同じデータを再度再送信することを防ぎます。

サーバー側で挿入に時間がかかり、ユーザーが待機する必要がある場合は、JavaScriptを使用してボタンを無効にします。サーバーが操作を完了すると、新しい応答が送信され、再度有効にする必要はありません(サーバー側でボタンが無効になっていないと仮定します)。

1

CodeBehindでこれを回避するのは間違った方法です。なぜなら、ポストバック後にButtonが無効になるからです。これを達成する唯一の方法は、javascriptを使用することです。

あなたはこのようにそれを行うだろう:

var button = document.getElementById('yourButton'); 
button.disabled = true; 
関連する問題