私はこのようなことをしたかった:
<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>
私はJavascriptで私ができることを知っています:
<span onclick="foo();">My Label</span>
だから、なぜ私はLabelオブジェクトでそれを行うことができないのか疑問に思っています。
属性を使用して、onclickクライアント側コールバックを追加できます。
スパンタグでこれを実行できることを知りませんでしたが、機能する場合は、「onclick」を追加できます。lblMyLabel.Attributes.Add("onclick", "foo();");
ただしfoo();
、クライアント側のjavascript関数である必要があります。
System.Web.UI.WebControls.Label
OnClickサーバーイベントはありません。上記の例でサーバーコールバックが必要な場合は、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; }
あなたの質問は、サーバー(VBまたはC#)またはクライアント(javascript)でクリックイベントを発生させるつもりかどうかを指定していません。サーバー側のイベントを探している場合は、CSSでリンクボタンを使用する必要がありますリンクはラベルとして表示されます。その後、リンク ボタンのサーバー側クリック イベントを使用できます。クライアント側のクリック イベントを探している場合は、それをサーバー コントロール マークアップに入力
asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
するだけです。ASP.NET は、生成される html マークアップで追加の属性を発行します。
page_loadのコードでそれを行うことができます。例:
void Page_Load(object sender, EventArgs e)
{
lblMyLabel.Attributes.Add("onclick",
"javascript:alert('ALERT ALERT!!!')");
}
onclientclick
onclick イベントが必要な場合は、次のイベントを持つ linkbutton を使用しないでください。
<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>
CSSを使用して、リンクを好きなように見せることができます
できると思いますが、これはサーバー側ではなく、クライアント側のonclickハンドラーです。サポートされていない属性(またはそのようなもの)について文句を言いますが、正しくレンダリングされると思います。サーバーサイドハンドラーにしたい場合は、LinkButtonを実行する必要があると思います。
私の知る限り、それは不可能です。ラベル コントロールは<span
、サーバー側で「クリックできない」要素を出力します。Label コントロールを LinkButton に置き換える必要があります。
別のハックは、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>
ラベルから継承するクラス オブジェクトと onclick イベント ハンドラを作成する必要があります。これは yoursref によるメソッドになり、オブジェクトをカスタム ラベルとして使用します。
.net の標準ポストバック JavaScript を使用して、スパンを生成する独自のコントロールをいつでも展開できますが、前述のように、CSS クラスで linklabel を使用する方が簡単です。