2

我遇到了一些问题:我正在运行时创建一个具有导航 URL 的超链接。我需要定义它的点击事件,以便我可以将一些值保存到数据库中。我做了类似下面的事情但没有成功。

你能建议一个替代方案吗?

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。请问该怎么办?

4

3 回答 3

3

要触发服务器端事件,您需要 aLinkButton而不是 aHyperLink

LinkButton有一个Click可以使用的事件处理程序。

HyperLink仅重定向并且没有与服务器端代码关联的相应 Click 事件处理程序

于 2012-07-13T09:35:30.000 回答
1

你想要一个链接按钮,而不是一个超链接。

这是一些示例代码,可帮助您入门(未经测试)

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");
}
于 2012-07-13T09:38:18.600 回答
1

您应该使用链接按钮。只需在您的代码中用 LinkBut​​ton 替换您的超链接。它应该可以工作。

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) {
}
于 2012-07-13T09:44:26.373 回答