3

Eval() を使用して JavaScript メソッド呼び出しをバインドするとエラーが発生します。以下は、リピーター コントロール内のコード行です。

<asp:Button ID="View" runat="server" Text="View" CommandName="View" OnClientClick="OpenInNewWindow(<%# Eval("JobID")%>)">
                        </asp:Button>

その JavaScript メソッドの値 jobId を取得する必要があります。誰でも私を助けることができますか?

4

5 に答える 5

1

これを試して:

<asp:Button ID="AddCartButton" runat="server" Text="Add To Cart" onClick="AddCartButton_Click" 
     OnClientClick='<%# Eval("JobID", "OpenInNewWindow(\"{0}\").ToString()") %>'/>

一重引用符はそれぞれ、マークアップパーサーの方向を変えます。これを除いて、式は通常のC#式と実質的に同じ方法で評価されました

構文を修正しました

于 2012-12-11T05:59:40.047 に答える
1

JobID を囲む引用符が欠落していると思います。

試す:

<asp:Button ID="View" runat="server" Text="View" CommandName="View" OnClientClick="OpenInNewWindow('<%# Eval("JobID")%>')">
</asp:Button>
于 2012-12-11T05:13:42.603 に答える
0
<asp:Button ID="View" runat="server" Text="View" CommandName="View" OnClientClick="window.open('yourpage.aspx?JobID=<# Eval("JobID")','','width=200,height=100')">
</asp:Button>
于 2012-12-11T05:14:34.587 に答える
0

JavaScript 関数を宣言的にバインドしないでください。対応するグリッドの itemdatabound イベントをキャプチャすることにより、コード ビハインドで実行します。このイベントでは、最初にボタンへの参照を取得してから、javascript 関数のバインドを次のように定義します。

    int JobID = DataBinder.Eval(e.Row.DataItem, "JobID").ToString();
    Btn.Attributes.Add("OnClientClick","javascript:OpenInNewWindow(" + JobID + ")");

それが役立つことを願っています...

于 2012-12-11T05:52:16.407 に答える
0

コード ビハインドでプロパティを設定するOnClientClickか、コード ビハインドで行を追加しますpage.DataBind()。ページがバインドされるJobIDと、値が評価され、クライアントに送信されるページに追加されます。

さらに詳しい情報が必要な場合は、ASP.NET データ バインディングの概要または別のフォーラムのこの投稿を確認してください。私は通常、ページ バインディングを避け、コード ビハインドでプロパティを設定します。ページ バインディングは非常に便利ですが、予測が難しく (ページの読み込み時に bind を呼び出しましたか? ボタン イベントで?)、複雑な場合もあります (ページの読み込み時に 1 つの変数をバインドする必要がありますが、もう 1 つの変数は後でバインドする必要があります)。

于 2012-12-11T05:02:15.577 に答える