C# 如何从我正在编程构建的gridview中的linkbutton调用服务器端方法?

C# 如何从我正在编程构建的gridview中的linkbutton调用服务器端方法?,c#,gridview,server-side,linkbutton,C#,Gridview,Server Side,Linkbutton,我有以下代码。 我以编程方式构建了一个grdiview,然后遍历并将其中一列更改为linkbutton。不幸的是,它从未调用服务器端的lb_Click方法。 有人面对过这个问题吗 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class

我有以下代码。 我以编程方式构建了一个grdiview,然后遍历并将其中一列更改为linkbutton。不幸的是,它从未调用服务器端的lb_Click方法。 有人面对过这个问题吗

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

您需要为linkbutton添加一个处理程序,以便在Click事件上调用lb_Click

lb.Click += lb_Click;

您需要为linkbutton添加一个处理程序,以便在Click事件上调用lb_Click

lb.Click += lb_Click;

如果您在动态控件方面做了很多工作,请查看以下两篇文章:,如果您在动态控件方面做了很多工作,请查看以下两篇文章:,哇-我很笨!:-)非常感谢!哇-我真傻!:-)非常感谢!