5

したがって、現在、aspグリッドビュー内に次のものがあります

<span id="btnEdit" runat="server" onclick="ShowEditCriteriaFilterDialog('<%#Eval("intSMCID")%>', '<%#Eval("strDescription")%>')" class="linkText">Edit</span>

私が本質的に探しているのは、上記の機能が適切に機能しないため、実際にこれを適切に実行するための引用符/二重引用符の構文です。

まず、onclick全体を一重引用符でカプセル化し、他の引用符を中に入れない場合、レンダリングの目的で機能しますが、実行時に実際にリンクをクリックしても何も起こりません。

ASPX要素のほとんどのプロパティのように、onclick全体を二重引用符でカプセル化すると、正しくレンダリングされず、最初の<%#Eval%>ステートメントの後のコンマの後のすべてが実際のテキストとして表示されます。画面。これにより、クリックハンドラーがその<%#Eval%>ステートメントの途中で終了したと見なされないようにするために、エスケープを行う必要があると思います。

runat = "server"を削除して二重引用符で囲むだけの場合は、うまくいくようですが、ページにある他の多くの機能をサーバー側で制御するためにスパンが必要です。 FindControlを介してコントロールにアクセスする必要がある場所の背後にあるコード

4

2 に答える 2

0

解決策は

onclick='<%# "ShowEditCriteriaFilterDialog(" +Eval("intSMCID") + ","+ Eval("strDescription") +" );" %>'
于 2012-12-13T16:34:21.910 に答える
0

関数にはEval二重引用符が必要なため、属性値を一重引用符で囲む必要があります。

静的コンテンツと<%# ... %>ブロックをコントロールの単一のプロパティ値に混在させることはできないrunat="server"ため、単一のブロック内に文字列全体を構築する必要があります<%# ... %>

<%# ... %>ブロック内の文字列内に&apos;、一重引用符を挿入するために使用できます
。EDIT.NET4.0でのみ機能します。2.0では、を生成しますが&amp;apos;、これは機能しません。代わりに二重引用符を使用してください。

onclick='<%# string.Format(
   "ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")", 
   Eval("intSMCID"), Eval("strDescription")) %>'

データによっては、JavaScriptの文字列値をエンコードする必要がある場合もあります。

onclick='<%# string.Format(
   "ShowEditCriteriaFilterDialog(\"{0}\", \"{1}\")", 
   Eval("intSMCID"), 
   HttpUtility.JavaScriptStringEncode(Eval("strDescription", "{0}"))) %>'

(読みやすくするためにコードをラップしました。1行にする必要があります。)

于 2012-12-13T16:37:58.210 に答える