javascript - 动态链接按钮的 Onclick 未触发

标签 javascript c# asp.net calendar linkbutton

我有一个日历控件,我可以在其中单击某一天,然后弹出一个 JavaScript 弹出窗口来添加培训类(class)。每天可能有多个培训类。添加类是没有问题的。然后在另一个页面上,我得到了这个精确的日历控件,但是每天都有动态链接按钮填充培训类(class)。单击链接按钮时,我想检索该培训类(class)的 ID,该 ID 将用于填充标签,并在经理请求为其员工提供培训时(插入 SQL 时)使用此 ID 作为引用。

我尝试添加事件处理程序,但这没有触发。我已尝试对此链接按钮使用 Click 属性(但无法从属性调用方法)...我不确定我是否错过了事件处理程序未触发的某些内容,有人可以帮助我吗?

这就是我所做的: 日历控件的DayRendering:

    protected void calSchedule_DayRender(object sender, DayRenderEventArgs e)
    {
        bool result = false;

        string filterstring = "SELECT tos.[ID], sc.ServiceCenter, tos.Description " +
                              "FROM [SOS].[dbo].[TrainingOfficerSchedule] tos " +
                              "INNER JOIN [dbo].[TrainingOfficerServiceCenters] sc " +
                              "on tos.ServiceCenterRef = sc.ID " +
                              "WHERE TrainingDate = @TrainingDate";

        cn = new SqlConnection(GetConnectionString());
        SqlCommand myCmd = new SqlCommand(filterstring, cn);
        myCmd.Parameters.AddWithValue("@TrainingDate", e.Day.Date.ToShortDateString());

        cn.Open();
        SqlDataReader myReader = myCmd.ExecuteReader();

        if (myReader.HasRows)
        {
            while (myReader.Read())
            {
                string training = myReader["ServiceCenter"].ToString() + " - " + myReader["Description"].ToString();

                LinkButton lnk = new LinkButton();
                lnk.ID = myReader["ID"].ToString();
                lnk.ForeColor = Color.FromArgb(64, 64, 64);
                lnk.BackColor = Color.FromArgb(192, 192, 192);

                lnk.Attributes.Add("onclick", "return getItems();");
                lnk.Click += new EventHandler(lnk_Click);
                  //lnk.Attributes.Add("onClick", "return getItems();");
                  //lnk.Attributes.Add("OnClientClick", "return getItems();");
                  //lnk.Attributes.Add("onclick", jsMethod(Convert.ToInt32(myReader["ID"])));
                  //lnk.Click += new EventHandler(this.lnk_Click);
                  //lnk.Atributes.Add("runat", "server");
                  //lnk.Attributes.Add("onclick", jsMethod(myReader["ID"].ToString()));
                lnk.Text = training + "<br/><br/>";
                lnk.Style.Add("cursor", "pointer");
                e.Cell.Controls.Add(lnk);
            }
        }
        cn.Close();
    } 

单击 Linkbutton 时触发的事件处理程序:

    public void lnk_Click(object sender, EventArgs e)
    {
        string ctrlId = ((Control)sender).ID;
        txtMManagerName.Text = ctrlId;
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "popSchedular", "showSchedular();", true);
    }

我可能做错了什么吗?

最佳答案

将 PlaceHolder 放在要显示链接按钮的位置,然后尝试。

<asp:PlaceHolder ID="ph" runat="server" />


LinkButton lnk = new LinkButton();
            lnk.ID = myReader["ID"].ToString();
            lnk.ForeColor = Color.FromArgb(64, 64, 64);
            lnk.BackColor = Color.FromArgb(192, 192, 192);
            lnk.Attributes.Add("onclick", "return getItems();");
            lnk.Click += new EventHandler(lnk_Click);
            lnk.Text = training + "<br/><br/>";
            lnk.Style.Add("cursor", "pointer");
            ph.Controls.Add(lnk);

protected void lnk_Click(object sender, EventArgs e)
{
    string ctrlId = ((Control)sender).ID;
    txtMManagerName.Text = ctrlId;
    this.Page.ClientScript.RegisterStartupScript(this.GetType(), "popSchedular", "showSchedular();", true);
}

关于javascript - 动态链接按钮的 Onclick 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817384/

相关文章:

c# - Bootbox.confirm 可以同步工作吗?

C# DateTime 在过去 24 小时内

c# - 如何使用 Task 对象初始化 List

asp.net - 将复杂对象作为参数发送给 Asp.Net PageMethod

javascript - Bootstrap 开始时如何关闭菜单折叠?

javascript - es6 多行模板字符串,没有新行并允许缩进

javascript - 如何在图像 CSS 上放置一个思想泡泡

javascript - ASP.NET CodeBehind 无法识别 TinyMCE Textarea 更改

c# - Server.mappath 混淆

javascript - Highcharts 缩放时显示滚动条