2014-01-24 10 views
0

Я использую gridview и привязан к datatable, поэтому для autogeneratecolumns установлено значение true. Затем я добавил динамическую ссылку в последнюю ячейку строки, и я вижу ссылку, которая появляется в gridview. Теперь я не могу связать какое-либо событие с кнопкой. Я хотел бы узнать, срабатывают ли события при использовании динамически добавленной кнопки ссылки в gridview с автогенераторами, установленными в true. Вот что я имею в своем кодеСоздание динамически созданного linkbutton для запуска события при нажатии

protected void btnSearch_Click(object sender, EventArgs e) 
{ 

Datatable retval = // api call to a method. returns valida datatable 

    if (retval != null) 
    { 
     if (retval.Rows.Count > 0) 
     { 
      GridViewSearchResult.Visible = true; 
      GridViewSearchResult.DataSource = retval; 
      GridViewSearchResult.DataBind(); 
    } 
    } 
} 

protected void GridViewSearchResult_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 

    LinkButton lb; 
    int j = e.Row.Cells.Count; 
    string HeaderText; 

    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 

     lb = new LinkButton(); 
     lb.Text = "edit"; 
     //lb.CommandArgument = "edit"; 
     //lb.CommandName = "edit"; 
     //lb.Command += LinkButton_Command; 
     //lb.Click += new EventHandler(onLinkClick); 
     //ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(lb); 
     //e.Row.Cells[j-1].Controls.Add(l); 
     e.Row.Cells[j-1].Controls.Add(lb); 

     lb.Click += new EventHandler(lbtn_Click); 

    } 

} 


protected void GridViewSearchResult_RowCommand(object sender, CommandEventArgs e) 
{ 
    switch (e.CommandName.ToLower()) 
    { 
     case "edit": 
      Server.Execute("VerifyContact.aspx"); 
      break; 
     default: 
      break; 
    } 
} 
protected void lbtn_Click(object sender, EventArgs e) 
{ 
    //if (e. == "delete") 
    { 
     Server.Execute("VerifyContact.aspx"); 
    } 
} 
protected void LinkButton_Command(object sender, CommandEventArgs e) 
{ 
    if (e.CommandName == "edit") 
    { 
     LinkButton lb = (LinkButton)sender; 
     lb.Text = "OK"; 
    } 
} 

и ASP

<div id="searchResultGrid"> 
     <asp:GridView ID="GridViewSearchResult" runat="server" 
      OnRowDataBound="GridViewSearchResult_RowDataBound" 
      onselectedindexchanged="GridViewSearchResult_SelectedIndexChanged" 
      onRowEditing = "GridViewSearchResult_RowEditing" 
      onRowCommand = "GridViewSearchResult_RowCommand"> 

     </asp:GridView> 
    </div> 
+1

напишите свой код здесь –

ответ

0

Я также четко не понимаю проблему у вас есть, но что-то ISN `о живой функции старой(), которые могли бы обрабатывать динамически сгенерированные элементы. Я думаю, что .delegate() может справиться с этим.