8

私のリンクボタン -

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" OnClientClick="javascript:msgDisp('<%# Eval(LocationId).toString() %>')" />

そしてjavascript msgDispは-

<script type="text/javascript" language="javascript">
    function msgDisp(lid) {            
        alert(lid);
    }
</script>

しかし、ポップで LocationId を与えるのではなく、文字列全体 <%#......%> がポップアップ メッセージに表示されます。javascript で Eval 値を渡すにはどうすればよいですか。

4

5 に答える 5

13

の内容全体をOnClientClickコード ブラケット内の文字列として作成すると、期待どおりに出力されます。

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" 
    OnClientClick='<%# "msgDisp(" + Eval("LocationId") + ");" %>' /> 

これは、LocationId が有効な数値であると想定しています。レンダリング時に値をラップする引用符がないため、次のようなものを出力するmsgDisp(hello);と壊れます。この方法で対処する方法がわからないので、そうする必要がある場合は、イベントOnClientClick中にサーバー側を設定することをお勧めします. 親がコントロールItemDataBoundである場合は、次のようになります。Repeater

protected void notesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    MyClass item = (MyClass)e.Item.DataItem;
    LinkButton lbtnEdit = (LinkButton)e.Item.FindControl("lbtnEdit");
    lbtnEdit.OnClientClick = string.Format("msgDisp('{0}');", item.LocationId);
}
于 2010-09-30T13:45:09.790 に答える
2

ネットであちこち探しました。CodeBehind を使用すると誰もが言います。私のデータ値にオニールのように一重引用符が含まれている場合でも機能する私のソリューションを参照してください。 データ項目に二重引用符が含まれている場合、これは機能しません。しかし、人の名前を渡す必要があったために機能します。アラート呼び出し内のバックスラッシュに注意してください。

OnClientClick="<%#string.Format(&quot;alert(\&quot;{0}\&quot;); return false; &quot;, Eval(&quot;NAME&quot;))%>"**
于 2013-01-18T21:04:16.463 に答える
2

マークアップでレンダリングされたバインド式タグ (<%# ... %>) を取得している場合は、LinkBut​​ton がバインド コンテナーで初期化されていないことを意味します。バインド コンテナーは、@lincolnk が示したように、Repeater または GridView アイテム、Calendar セルなどにすることができます。また、関数呼び出しの前に "javascript:" を付ける必要はありません。OnClientClick プロパティの値は、アンカーのonclickイベントのハンドラーとしてレンダリングされます。

于 2010-09-30T18:36:17.097 に答える
0

回答してくれたリンカーンクに感謝します。現在、googam.com の新しいソーシャル ネットワークの構築を手伝っています。jqueryモーダルダイアログポップアップで、データリストでユーザーのプロファイルを表示するソリューションを数日間探していました。ItemDataBound イベントで linkbutton OnClientClick を設定すると、ポップアップ ウィンドウで acsx ユーザー コントロールを開くためにユーザー ID を JQuery 関数に渡すという問題が解決されました。

    jQuery(document).ready(function () {
        var mydiv = jQuery("#mydialog").dialog({
            autoOpen: false,
            resizable: false,
            modal: true,
            width: '500',
            height: '400'
        }).css("font-size", "0.8em");
    });

    function ShowPopup(uid) {
        var mydiv = jQuery("#mydialog")
        //alert(uid)
        // Load the content using AJAX
        mydiv.load('Profile.aspx?id=' + uid);
        // Open the dialog        
        mydiv.dialog('open');
    }

//////////////

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
        Dim imageControl = TryCast(e.Item.FindControl("Image1"), Image)
        Dim Uid As String = imageControl.ImageUrl

        Dim ProfileBtn As LinkButton = TryCast(e.Item.FindControl("ProfileButton"), LinkButton)
        ProfileBtn.OnClientClick = String.Format("ShowPopup('{0}');return false;", Uid)

    End If
End Sub
于 2013-08-22T20:05:32.443 に答える