2012-01-07 80 views
2

我從數據庫取決於texboxes輸入,並在數據表中存儲檢索數據,之後再從數據表中即時發送數據爲動態表,並在面板中顯示的表,在表中的事件處理程序的所有第一列的數據了LinkBut​​ton的,我寫了動態鏈接按鈕的事件處理程序,但事件處理函數不是觸發,我想存儲在事件處理程序的字符串LinkBut​​ton的文本,但該事件處理程序未觸發。錯誤動態的LinkBut​​ton

代碼:

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) 
{ 

} 

ķ但通過使用會話概念IM獲取的總表,以便了LinkBut​​ton也檢索了,我想添加一個按鈕點擊linkbttons,這裏的問題是事件處理程序不assiging到LinkBut​​ton和IM上添加按鈕點擊了LinkBut​​ton,而不是在頁面加載。

回答

1

您必須使用Page_InitPage_Load事件處理函數來編寫動態創建控件的代碼。請閱讀關於How to add controls dynamically和ASP.NET頁面生命週期文章的MSDN頁面。

0

您可以添加事件處理程序的Page_Load事件,但重要的考慮要記住的是,他們必須在每個網頁加載後添加。在!中執行安裝類型任務是很常見的,例如: Page.IsPostBack條款。當連接了事件處理情況並非如此,否則他們將似乎消失

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

是錯誤的,並會導致在回發

處理程序消失