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

LinkButtonサーバー側のイベントを発生させるには、 ではなくが必要です。HyperLink

LinkButton使用できるイベントハンドラーがClickあります。

HyperLinkリダイレクトのみで、サーバー側コードに関連付けられた対応する Click イベント ハンドラーはありません。

于 2012-07-13T09:35:30.000 に答える
1

リンクボタンを使用する必要があります。コード内の Hyperlink を 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 に答える
1

You want a LinkButton, not a HyperLink.

Here's some sample code to get you started (not tested)

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 に答える