2016-08-04 3 views
0

現在の行にバインドしているIDに従ってリピーターのボタンをクリックするとポップアップウィンドウを開きたいと思います。私はこのidを使って呼び出したいjavascript関数を書いていますこのJavaスクリプト関数は、リピータのItemDataBoundイベントから呼び出されます。リピーターイベントのボタンクリックでjavascript関数を呼び出す方法Repeater1_ItemDataBound

This is java script code : 

    <script type="text/javascript"> 
     function test(lblEduCatId) { 
      window.onload = function() { 
       var modal = document.getElementById('myModal'); 
       var btn = document.getElementById("<%=btnAccess.ClientID %>").value; 
       var span = document.getElementsByClassName("close")[0]; 

       btn.onclick = function() { 
        modal.style.display = "block"; 
       } 

       span.onclick = function() { 
        modal.style.display = "none"; 
       } 

       window.onclick = function(event) { 
        if (event.target == modal) { 
         modal.style.display = "none"; 
        } 
       } 
      } 
     } 


    </script> 


.cs code 

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      string lblEduCatId = DataBinder.Eval(e.Item.DataItem, "EduCatId").ToString(); 
      string lblIsFree = DataBinder.Eval(e.Item.DataItem, "IsFree").ToString(); 
      string lblAccess = DataBinder.Eval(e.Item.DataItem, "Access").ToString(); 


      Button access = (Button)e.Item.FindControl("btnAccess"); 
      access.OnClientClick = "return test(lblEduCatId);"; 

      if (Session["UserName"] != null) 
      { 
       if (lblAccess.ToString() == "True") 
       { 
        access.Text = "Access"; 
        access.CommandName = "Access"; 
       } 
       else 
       { 
        access.Text = "Subscribe"; 
        access.CommandName = "Subscribe"; 
       } 
      } 
      else 
      { 
       if (lblIsFree.ToString() == "True") 
       { 
        access.Text = "Access"; 
        access.CommandName = "Access"; 
       } 
       else 
       { 
        access.Text = "Subscribe"; 
        access.CommandName = "Subscribe"; 
       } 
      } 
     } 


    } 

答えて

0

の背後にあるコードで使用、これを:

Button access = (Button)e.Item.FindControl("btnAccess"); 
access.OnClientClick = "test(" + lblEduCatId + "); return false;"; 

、ページ上:

<script type="text/javascript"> 
function test(lblEduCatId) { 
    //open the modal with the correct lblEduCatId received from the repeater 
} 
</script> 

Repeater1_ItemDataBoundでは、変数lblEduCatIdを追加しないので、あなたの現在のコードは動作しません。 OnClientClickには、 'lblEduCatId'だけをプレーンテキスト文字列として、それを引用符で囲みません。あなたはbtnAccessは、そのコンテキスト内に存在しないので、これも動作しません

var btn = document.getElementById("<%=btnAccess.ClientID %>").value; 

を使用するJavaScriptで セカンド。リピーターのすべてのボタンには独自のclientIDがあります。

+0

私の問題を解決するのに役立つあなたの答えに感謝します。 – Monika

関連する問題