我有一个日历控件,我可以在其中单击某一天,然后弹出一个 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/