2012-01-07 11 views
2

私は、テクスチャ入力に応じてデータを取得し、データテーブルに格納した後、データテーブルから動的テーブルにデータを送信し、パネル内のテーブルをテーブルに表示しています最初の列のデータはlinkbuttons、私は動的リンクボタンのイベントハンドラを書きましたが、イベントハンドラはトリガされていませんし、イベントハンドラの文字列にlinkbuttonテキストを格納したいですが、イベントハンドラがトリガされていません。ダイナミックリンクボタンのイベントハンドラでエラーが発生しました

コード:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    // GridView1. 
    DataTable dt = new DataTable(); 

    OleDbConnection con = new OleDbConnection(str); 
    con.Open(); 
    OleDbCommand cmd = new OleDbCommand(); 
    cmd.Connection = con; 
    cmd.CommandText = "select ID,title,desc from [SO] where ID='" + TextBox1.Text.ToString() + "'or title='" + TextBox2.Text.ToString() + "'"; 
    OleDbDataAdapter db = new OleDbDataAdapter(cmd); 
    db.Fill(dt); 
    Table tb = new Table(); 
    tb.BorderColor = Color.Black; 
    tb.BorderWidth = 2; 

    DataRow dr; 
    for (int i = 0; i < dt.Rows.Count; i++) 
    { 

     TableRow tr = new TableRow(); 
     tr.BorderColor = Color.Black; 
     tr.BorderWidth = 2; 
     tr.ID = "tr" + i; 
     TableCell tc = new TableCell(); 
     tc.BorderColor = Color.Black; 
     tc.BorderWidth = 2; 
     tc.ID = "tc" + i; 
     TableCell tc1 = new TableCell(); 
     tc1.BorderColor = Color.Black; 
     tc1.BorderWidth = 2; 
     tc1.ID = "tc1" + i; 
     TableCell tc2 = new TableCell(); 
     tc2.BorderColor = Color.Black; 
     tc2.BorderWidth = 2; 
     tc2.ID = "tc2" + i; 
     LinkButton t = new LinkButton(); 
     t.BorderColor = Color.Black; 
     t.BorderWidth = 2; 
     t.ID = "t" + i; 
     t.Click += new EventHandler(t_edit); 

     TextBox t1 = new TextBox(); 
     t1.BorderColor = Color.Black; 
     t1.BorderWidth = 2; 
     t1.ID = "t1" + i; 
     TextBox t2 = new TextBox(); 
     t2.BorderColor = Color.Black; 
     t2.BorderWidth = 2; 
     t2.ID = "t2" + i; 

     dr = dt.Rows[i]; 
     t.Text = Convert.ToString(dr["ID"]); 
     t1.Text = Convert.ToString(dr["title"]); 
     t2.Text = Convert.ToString(dr["desc"]); 
     tc.Controls.Add(t); 
     tc1.Controls.Add(t1); 
     tc2.Controls.Add(t2); 
     tr.Cells.Add(tc); 
     tr.Cells.Add(tc1); 
     tr.Cells.Add(tc2); 
     tb.Rows.Add(tr); 

    } 
    Panel1.Controls.Add(tb); 

} 
protected void t_edit(object sender, EventArgs e) 
{ 

} 

Kが、linkbuttonsも取得しているように、全テーブルを検索し、セッションの概念イムを使用して、と私はここでは、ボタンのクリックでlinkbttonsを追加したいです問題は、イベントハンドラがリンクボタンに同意していないこと、そしてリンクボタンをページのロードではなくボタンのクリックに追加していることです。

答えて

1

コントロールを動的に作成するコードを記述するには、Page_InitまたはPage_Loadイベントハンドラを使用する必要があります。 How to add controls dynamicallyのMSDNページとASP.NETページライフサイクルの記事をお読みください。

0

イベントハンドラをPage_Loadイベントに追加できますが、重要なことは、すべてのページの読み込み時に追加する必要があることです。このようなセットアップタイプのタスクは、一般的には! Page.IsPostBack句。ケースではありませんイベントハンドラを配線する場合それ以外の場合は、

if(!Page.PostBack) 
{ 
    control.EventRaised += new EventHandler(EventResponse) 
} 

を消えるように見えるだろうが間違っているとポストバック

に消えハンドラになります
関連する問題