Asp.net CommandButton事件未触发

Asp.net CommandButton事件未触发,asp.net,visual-studio-2010,Asp.net,Visual Studio 2010,我正在从datatable填充一个html表,每个datatable行的每个表行中都有一个edit按钮 我正在代码中添加编辑按钮,如下所示: protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (UserName != null && UserName != "") {

我正在从datatable填充一个html表,每个datatable行的每个表行中都有一个edit按钮

我正在代码中添加编辑按钮,如下所示:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (UserName != null && UserName != "")
            {
                hUserName.Value = UserName;
            }
            else
                if (hUserName.Value != "")
                    UserName = hUserName.Value;
            ShowTrainingEntry();
            ShowUserTraining();  <-------------- this method populates table
            hTID.Value = TrainingID.ToString();
        }
    }

    public void ShowUserTraining()
    {
       ....

                        dTotalTrainingHours += ShowTrainingInPeriod(dv);
       ....
    }

    protected decimal ShowTrainingInPeriod(DataView dv)
    {
       ....
        foreach (DataRowView rowView in dv)
        {
            ....
            Button bEdit = new Button();
            int iTID = Convert.ToInt32(dr["ID"].ToString());
            bEdit.Text = "Edit";
            bEdit.ID = "btnEdit_" + iTID.ToString();
            bEdit.CommandName = "Edit";
            bEdit.CommandArgument = iTID.ToString();
            bEdit.Command += new CommandEventHandler(btnEdit_Click);
            ....
        }
        ....
    }

    public void btnEdit_Click(object sender, CommandEventArgs e)
    {
        clsLog.WriteLog("btnEdit_Click fired.");
        clsLog.WriteLog("\t" + e.CommandName);
        clsLog.WriteLog("\t" + e.CommandArgument.ToString());
        UserName = hUserName.Value;
        TrainingID = Convert.ToInt32(e.CommandArgument);
        ShowTrainingEntry();
        ShowUserTraining();
    }
受保护的无效页面加载(对象发送方,事件参数e)
{
如果(!Page.IsPostBack)
{
如果(用户名!=null&&UserName!=“”)
{
Value=用户名;
}
其他的
if(hUserName.Value!=“”)
UserName=hUserName.Value;
showtrainingtry();

ShowUserTraining();尝试执行事件注册

btnEdit_Click.Click += new EventHandler(this.btnEdit_Click);

使用GridView。它已经内置了所有功能。我们可以查看HTML表吗?我猜按钮没有在服务器端运行。(
runat=“server”
)无法将GridView用于此应用程序。原始应用程序是经典的ASP,并且有空格分隔期间(年)管理层希望保留哪一行。从技术上讲,我可以使用gridview,但在时段之间插入空格的编程将是一场噩梦!我必须在数据绑定事件期间捕获每一行,并在时段之间插入“空白”行。在任何情况下,commandbutton方法都应该有效。至于runat=“server”:不是代码创建按钮的选项。好的。我重新发布并使用了gridview,并在RowDataBoundevent中添加了额外的行。但是,现在gridview索引都乱了,编辑功能失败,因为它没有正确的索引。有没有办法更正此问题?btnEdit\u Click是一个方法,而不是一个对象。
btnEdit_Click.Click += new EventHandler(this.btnEdit_Click);