2009-04-14 32 views
4

​​複数の引数を.aspxファイルのJavaScript関数に渡そうとしていますが、コンパイラエラーが発生しています。私はJavaScriptを初めて使用しており、以前は​​を実際に使用したことはありません。どこが間違っていますか?複数のEval()をASPXのJavaScript関数に渡す

NB :次に示す行が1行に実際にすべてのですが、わかりやすくするために、ここで包まれている:

<asp:LinkButton runat="server" Text='<%#Eval("Title")%>' 
    OnClick='javascript:ShowEventDetails' 
    CommandArgument='<%# 
     Eval("EventID").ToString()   & Eval("Title").ToString() & 
     Eval("Location").ToString()   & Eval("StartTime").ToString() & 
     Eval("Description").ToString()  & Eval("Link").ToString() & 
     Eval("ContactFirstName").ToString() & Eval("ContactLastName").ToString() & 
     Eval("ContactEmail").ToString()  & Eval("InsertionTime").ToString() & 
     Eval("EventAdmin").ToString()%>); ' /> 

がこれを行うのより良い方法はありますか?もしそうなら、彼らは何ですか?

+0

私が与えた答えはあなたを助けている場合、私に教えてください。 –

答えて

2

OnClickは、イベントハンドラメソッドへの参照を期待するコントロールのプロパティです。 JavaScriptをOnClickプロパティに入れることはできません。

ボタンをクリックしたときに任意のJavaScriptを実行する場合は、OnClientClickを使用してください。

<asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("Title")%>' 
    OnClientClick='ShowEventDetails("<%# Eval("EventID").ToString() %>", 
     "<%# Eval("Title").ToString() %>", 
     "<%# Eval("Location").ToString() %>", 
     "<%# Eval("StartTime").ToString() %>", 
     "<%# Eval("Description").ToString() %>", 
     "<%# Eval("Link").ToString() %>", 
     "<%# Eval("ContactFirstName").ToString() %>", 
     "<%# Eval("ContactLastName").ToString() %>", 
     "<%# Eval("ContactEmail").ToString() %>", 
     "<%# Eval("InsertionTime").ToString() %>", 
     "<%# Eval("EventAdmin").ToString() %>");' /> 

を基本的にあなたが1つの長い文字列を構築している:私はあなたが(読みやすくするためにフォーマット)引数としてShowEventDetailsに試用版を渡したいと推定LinkBut​​tonコントロールがクリックされたときにJSで実行され

ShowEventDetails('123','Event Title','New York' ... etc ... 

+0

はご回答いただきありがとうございます。 コンパイラは、サーバータグの形式が正しくないと不平を言うようになりました。 –

+0

@Dhruv OK。構文を誤って入力する場所が非常に多いので、この引数を作成する方法は少し誤りがあります。私はそれをやり直して動作確認しました。 –

+1

@Rex ありがとうございます。 これは私がページソースから得たものです。あなたはまだこれを回避できると思いますか?

1

これを行うための最善の方法はこれのように、コードビハインドでOnClientClickプロパティを設定することです:あなたは、OnClientClick財産にあなたのアイテムを入れるためにString.Formatを使用してくださいたら

LinkButton lb = new LinkButton(); //Instantiate the linkbutton wherever you need to 

lb.OnClientClick = String.Format("javascript:ShowEventDetails 
('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}');", 
    EventID.ToString(), Title.ToString(), Location.ToString(), StartTime.ToString(), 
    Description.ToString(), Link.ToString(), ContactFirstName.ToString(), 
    ContactLastName.ToString(), ContactEmail.ToString(), InsertionTime.ToString(), 
    EventAdmin.ToString()); 
0

のaspxクライアントから複数のパラメータを渡すための別の方法は、サンプルコードは

使用の下に与えられている2つの二重引用符(+ " """ +評価( "XXX")。ToStringメソッド( )+「」」)あなたは文字列パラメータを渡したい場合は

OnClientClick='<%#"javascript:return OpenDetailsPage(" + Eval("xxx").ToString() + ",""" + Eval("xxx").ToString() + """," _ 
               + Eval("xxx").ToString() + "," + Eval("xxx").ToString() + "," + Eval("xxx").ToString() + "," _ 
               + Eval("xxx").ToString() + ",""" + Eval("xxx").ToString() + """,this);"%> ' 
関連する問題