2012-01-07 3 views
2

Я извлекаю данные из базы данных в зависимости от ввода и хранения texboxes в datatable, после чего из datatable im, отправляющего данные в динамическую таблицу и отображающей таблицу на панели, в таблице все данные первого столбца имеют linkbuttons, я написал обработчик событий для кнопок динамической ссылки, но обработчик событий не запускается, и я хочу сохранить текст linkbutton в строке обработчика события, но обработчик события не запускается.Ошибка с обработчиками событий динамической 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) 
{ 

} 

к, но с использованием сессий концепции IM извлекая общую таблицу таким образом, чтобы LinkButtons также извлечения, и я хочу, чтобы добавить linkbttons на кнопку мыши, то здесь Проблема заключается в том, что обработчик событий не прибегает к кнопке link, а im добавляет кнопки ссылки при нажатии кнопки, а не на загрузку страницы.

ответ

1

Необходимо использовать Page_Init или Page_Load обработчик события, чтобы написать код, который создает элементы управления динамически. Пожалуйста, прочитайте страницы MSDN по статьям How to add controls dynamically и ASP.NET.

0

Вы можете добавить обработчики событий к событию Page_Load, но важно помнить, что они должны добавляться при каждой загрузке страницы. Обычно такие задачи типа установки, как это, в a! Page.IsPostBack статья. При подключении обработчиков событий, это не так, иначе они, кажется, исчезают

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

неправильно и приведет обработчик исчезая на постбэка

Смежные вопросы