32

私はこのようなことをしたかった:

<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>

私はJavascriptで私ができることを知っています:

<span onclick="foo();">My Label</span>

だから、なぜ私はLabelオブジェクトでそれを行うことができないのか疑問に思っています。

4

10 に答える 10

45

属性を使用して、onclickクライアント側コールバックを追加できます。

スパンタグでこれを実行できることを知りませんでしたが、機能する場合は、「onclick」を追加できます。lblMyLabel.Attributes.Add("onclick", "foo();");

ただしfoo();、クライアント側のjavascript関数である必要があります。

System.Web.UI.WebControls.LabelOnClickサーバーイベントはありません。上記の例でサーバーコールバックが必要な場合は、AJAXの使用を検討できます。

LinkButton他の言い方と同じように使うこともできます。気になる下線だけの場合は、CSSを使用してリンクのように見えないようにすることができます。

ASPX:

<asp:LinkButton ID="LinkButton1" runat="server" 
    CssClass="imjusttext" OnClick="LinkButton1_Click">
LinkButton
</asp:LinkButton>

CSS:

a.imjusttext{ color: #000000; text-decoration: none; }
a.imjusttext:hover { text-decoration: none; }
于 2008-10-08T01:53:02.467 に答える
11

あなたの質問は、サーバー(VBまたはC#)またはクライアント(javascript)でクリックイベントを発生させるつもりかどうかを指定していません。サーバー側のイベントを探している場合は、CSSでリンクボタンを使用する必要がありますリンクはラベルとして表示されます。その後、リンク ボタンのサーバー側クリック イベントを使用できます。クライアント側のクリック イベントを探している場合は、それをサーバー コントロール マークアップに入力
asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
するだけです。ASP.NET は、生成される html マークアップで追加の属性を発行します。

于 2008-10-08T02:03:39.183 に答える
5

page_loadのコードでそれを行うことができます。例:

void Page_Load(object sender, EventArgs e) 
{
      lblMyLabel.Attributes.Add("onclick",
           "javascript:alert('ALERT ALERT!!!')");
}
于 2008-10-08T01:55:06.440 に答える
2

onclientclickonclick イベントが必要な場合は、次のイベントを持つ linkbutton を使用しないでください。

<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>

CSSを使用して、リンクを好きなように見せることができます

于 2008-10-08T01:57:05.593 に答える
1

できると思いますが、これはサーバー側ではなく、クライアント側のonclickハンドラーです。サポートされていない属性(またはそのようなもの)について文句を言いますが、正しくレンダリングされると思います。サーバーサイドハンドラーにしたい場合は、LinkBut​​tonを実行する必要があると思います。

于 2008-10-08T01:55:08.187 に答える
1

私の知る限り、それは不可能です。ラベル コントロールは<span、サーバー側で「クリックできない」要素を出力します。Label コントロールを LinkBut​​ton に置き換える必要があります。

于 2008-10-08T01:55:33.990 に答える
1

別のハックは、style="display:none;" で非表示のリンクまたはボタンを使用することです。スパン内の JavaScript 関数からサーバー コントロールのクリックをトリガーします。

このようなもの:

<asp:linkbutton id="lblMyLink" onClick="lblMyLink_Click" runat="server" style="display:none;">My Link</asp:linkbutton>
<span onclick="document.getElementById('lblMyLink').click();">My Label</span>
于 2008-10-08T02:13:09.553 に答える
0

ラベルから継承するクラス オブジェクトと onclick イベント ハンドラを作成する必要があります。これは yoursref によるメソッドになり、オブジェクトをカスタム ラベルとして使用します。

于 2009-09-09T06:29:16.473 に答える
0

.net の標準ポストバック JavaScript を使用して、スパンを生成する独自のコントロールをいつでも展開できますが、前述のように、CSS クラスで linklabel を使用する方が簡単です。

于 2008-10-08T02:15:26.010 に答える