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?
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;
}
}
}
}