title: How can I call a server side method from a linkbutton inside a gridview I am building programatically?
body: <p>I have the following code.
  I build a grdiview programamtically then I go through and change one of the columns to linkbuttons. Unfortunately, it never calls back to server side lb_Click method.
  Has any one faced this?</p>
  
  <pre><code>using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;
  
  public partial class _Default : Page
  {
      protected void Page_Load(object sender, EventArgs e)
      {
          if (CommonMethods.logOn(Request.ServerVariables["LOGON_USER"]))
          {
              Response.Redirect("http://www.google.com");
          }
  
          // Now we have to build the questions
          using (var context = new nVoteDataContext())
          {
              var retrievedQuestions = from q in context.questions
                                       select new
                                                  {
                                                      q.id,
                                                      q.question1,
                                                      q.questionType
                                                  };
  
              GridView_questions.DataSource = retrievedQuestions;
              GridView_questions.DataBind();
              GridView_questions.HeaderRow.Cells[0].Text = "#";
              GridView_questions.HeaderRow.Cells[1].Text = "Question";
  
              foreach (GridViewRow s in GridView_questions.Rows)
              {
                  if (s.RowType == DataControlRowType.DataRow)
                  {
                      var lb = new LinkButton();
                      lb.CausesValidation = true;
                      lb.Attributes.Add("runat", "server");
                      lb.CommandName = "lb_Click";
                      lb.CommandArgument = s.Cells[0].Text;
                      lb.Text = s.Cells[1].Text;
                      s.Cells[1].Text = string.Empty;
                      s.Cells[1].Controls.Add(lb);
                  }
              }
  
          }
      }
  
      public void lb_Click(object sender, EventArgs e)
      {
          foreach (GridViewRow s in GridView_questions.Rows)
          {
              if (s.RowType == DataControlRowType.DataRow)
              {
                  s.BackColor = System.Drawing.Color.Red;
              }
          }
      }
  }
  </code></pre>