2016-04-29 9 views
0

今、私は、検索バーの入力に基づいて情報のテーブルを動的に生成するメソッドを持っています。ボタンは各行にあります。押されると、そのボタンはその行にある情報を取り出して処理することになっています。私の生成したASP.NETボタンは実際に何もしません

私の問題は、私のボタンが何もしていないことですが、私はそれを修正する方法が正確にはわかりません。 VSで出力パネルに投稿しようとしても動作しません。私が1つを押すとすぐ、すべての値(すべてテーブルのすべて)が消去され、すべてページが更新されてデフォルトに戻ります。

// The bottom section of the method which 'generates' buttons for each row made in the for loop - everything works perfect to this point 

    TableCell addButtonCell = new TableCell(); 
    Button addButton = new Button(); 
    addButton.Text = "Add"; 
    addButton.Width = 75; 
    addButton.Click += new EventHandler(addButton_Click); 

    addButtonCell.Controls.Add(addButton); 
    row.Cells.Add(addButtonCell); 

    tblResults.Rows.Add(row); 
} 

// button event handler 
public void addButton_Click(object sender, EventArgs e) { 
    System.Diagnostics.Debug.Write("TESTING!!!!!"); // Tried this, no effect 
} 
+0

あなたは何を期待していますか?あなたのページがリフレッシュされている場合、私はあなたのボタンが期待通りに動作していると信じています。さらに、クリックイベントでのプロセスはすべてVSの出力ウィンドウ内に表示されます。 –

+0

私はそれがページを再読み込みしてからコードを実行しないようにする方法があるとは思いません、ありますか?私はハンドラを使って他のことをやろうとしましたが、もちろんそれは爽やかなので、とにかく拭き取られています。 – Vigilant

+0

更新パネルを使用してリフレッシュを回避します。 –

答えて

0

どのようなコントロールが作成されるか動的にページが読み込まれるたびに作成する必要があります。

SOLUTION:あなたが、私は次のように行われる方法を実行する必要があり

...

TableRow row; 
    TableCell cell; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (this.IsPostBack) 
     { 
      this.ReloadDynamicControls(); 
     } 
     else 
     { 
      DynamicControls = new List<Button>(); 
     } 
    } 
    private void ReloadDynamicControls() 
    { 
     if (this.DynamicControls != null) 
     { 
      foreach (Button button in DynamicControls) 
      { 
       button.Click += new EventHandler(btnKill_Click); 
       row = new TableRow(); 
       cell = new TableCell(); 
       cell.Controls.Add(button); 
       row.Controls.Add(cell); 
       Panel1.Controls.Add(row); 
      } 
     } 
    } 

    private List<Button> DynamicControls 
    { 
     get { return Session["DynamicControls"] != null ? (List<Button>)Session["DynamicControls"] : null; } 
     set { Session["DynamicControls"] = value; } 
    } 

そして、あなたは、あなたがこのコードでボタンのメソッドを生成変更する必要があります。

 TableRow tr = new TableRow(); 
     tblResults.Controls.Add(tr); 
     Button addButton = new Button(); 
     addButtonCell = new TableCell(); 
     addButtonCell.Controls.Add(addButton); 
     tr.Controls.Add(addButtonCell); 
     addButton.Width = 75; 
     addButton.Text = "Add"; 
     addButton.ID = "btn_" + this.DynamicControls.Count.ToString(); 
     addButton.Click += new EventHandler(addButton_Click); 
     addButton.EnableViewState = true; 
     DynamicControls.Add(addButton); 

     tr.TableSection = TableRowSection.TableBody; 
     tblResults.Rows.Add(tr); 

元の解答here

0

あなたはここにeクエリーはWHERE句を持つ必要があり、実際に1つの結果が返されることを保証して1で除算する必要があります。 if($ result-> num_rows == 0)に変更する必要があります。

関連する問題