我被困在某事上:我在运行时创建了一个带有导航URL的超链接。我需要定义它的click事件,以便我可以将一些值保存到数据库中。我做了类似下面的事但没有成功。
你能建议一个替代方案吗?
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) {
if (e.Item is GridDataItem) {
HyperLink link = (HyperLink)gridDataItem["ContentTitle"].Controls[0];
link.ForeColor = System.Drawing.Color.Navy;
link.ToolTip = Common.grdTextCell(gridDataItem["ContentSummaryDescr"].Text);
link.NavigateUrl = "~/SomePath/" + gridDataItem["ContentName"].Text;
link.Target = "_blank";
link.Attributes.Add("onclick", "document.getElementById('" +
dummyBtn.ClientID + "').click();");
}
}
protected void dummyBtn_Click(object sender, EventArgs e) {
}
但按钮点击事件未触发,它只是导航到URL。该怎么办?
答案 0 :(得分:3)
要解决服务器端事件,您需要LinkButton
而不是HyperLink
LinkButton
有一个Click
事件处理程序,您可以使用它。
HyperLink
仅重定向,并且没有与服务器端代码相关联的相应Click事件处理程序
答案 1 :(得分:1)
你想要一个LinkButton,而不是HyperLink。
以下是一些示例代码,可帮助您入门(未经测试)
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
LinkButton link = (LinkButton)gridDataItem["ContentTitle"].Controls[0];
link.Click += dummyBtn_Click;
}
}
protected void dummyBtn_Click(object sender, EventArgs e)
{
Response.Write("dummyBtn_Click");
}
答案 2 :(得分:1)
您应该使用链接按钮。只需在代码中用LinkButton替换你的超链接。它应该可以工作。
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e) {
if (e.Item is GridDataItem) {
LinkButton link = (LinkButton )gridDataItem["ContentTitle"].Controls[0];
link.ForeColor = System.Drawing.Color.Navy;
link.ToolTip = Common.grdTextCell(gridDataItem["ContentSummaryDescr"].Text);
link.NavigateUrl = "~/SomePath/" + gridDataItem["ContentName"].Text;
link.Target = "_blank";
link.Click += dummyBtn_Click;
}
}
protected void dummyBtn_Click(object sender, EventArgs e) {
}