2017-08-22 19 views
0

注:私はまだコードの大部分を書いていないので、コードを修正する方法は問いません。私は私が以下で説明するようなことをどうやって行うのかを尋ねています(つまり、foreachループによって生成されたハイパーリンクをユーザーの名前の代わりにコンテキスト項目に付けます)。または、私が考えていることを明確にする方法は、コンテキストメニューで、User Userが右クリックしていることを知ることです。foreachループの変数をコンテキストメニューに渡す

こんにちは、基本的に私は何をしようとしているのですか?ユーザーのリストがあり、私のWebページには、右クリックしたときにコンテキストメニューがポップアップするユーザー名のリストを " 「友人要求を送信する」または「メッセージユーザ」を選択し、ユーザがこれらのオプションの1つをクリックすると、「メッセージユーザ」オプションと言います。ユーザはURL内のクリックされたユーザIDをクエリとして別のページに送信されます文字列。

これは私がこれまで持っているものです。上のクリックしたときには、クリックしたユーザーのID URLに

<ul> 
 
\t <%foreach(UserCredential u in Global.Users) %> 
 
\t <%{ %> 
 
\t \t <li><a href="<%= "Chat.aspx?RecID=" + u.UserID.ToString() %>"><%= u.Name %></a></li> 
 
\t <%} %> 
 
<ul />
で次のページにユーザーを送信するハイパーリンクのリストを生成するコードスニペット

そして、これは、コンテキスト・メニュー

<div style="display:none; " id="contextMenu"> 
 
     <table border="0" cellpadding="0" cellspacing="0" 
 

 
      style="border: thin solid #808080; cursor: default;" width="100px" 
 

 
      bgcolor="White"> 
 
      <tr> 
 
       <td > 
 
        <div class="ContextItem">Message User</div> 
 
       </td> 
 
      </tr> 
 
      <tr> 
 
       <td > 
 
       <div class="ContextItem">Friend User</div> 
 
       </td> 
 
      </tr> 
 
      <tr> 
 
       <td > 
 
        <div class="ContextItem">Delete</div> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
\t </div>
のコードです

基本的には、ユーザーがContextItemをクリックした場所のループから "a href =" <%= "Chat.aspx?RecID =" + u.UserID.ToString()%> "" 。

function ShowMenu(control, e, id) { 
     var posx = e.clientX + window.pageXOffset + 'px'; //Left Position of Mouse Pointer 
     var posy = e.clientY + window.pageYOffset + 'px'; //Top Position of Mouse Pointer 
     document.getElementById(control).style.position = 'absolute'; 
     document.getElementById(control).style.display = 'inline'; 
     document.getElementById(control).style.left = posx; 
     document.getElementById(control).style.top = posy; 

     a.style.position = 'absolute'; 
     a.style.display = 'inline'; 
     a.style.left = posx; 
     a.style.top = posy; 
     var jqContext = '#' + id; 

     var view = document.getElementById("viewId"); 
     view.href = "Chat.aspx?RecID=" + id; 
    } 

そして、これは私のforeachループである:ここで

は、私が今持っているものである。ここ

<%foreach(UserCredential u in Global.Users) %> 
     <%{ %> 
      <li onmousedown="HideMenu('contextMenu');" onmouseup="HideMenu('contextMenu');" oncontextmenu="ShowMenu('contextMenu', event, <%= u.UserID.ToString() %>);"><%= u.Name %></li> 
     <%} %> 

は私の全体のコードです。もし何が間違っているのか分かる人は、教えてください。コードビハインド

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ProfilePicTest.aspx.cs" Inherits="ProfilePicTest" %> 
 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head runat="server"> 
 
    <title></title> 
 
\t <script language="javascript" type="text/javascript"> 
 

 
\t \t function ShowMenu(control, e, id) { 
 
\t \t \t var posx = e.clientX + window.pageXOffset + 'px'; //Left Position of Mouse Pointer 
 
\t \t \t var posy = e.clientY + window.pageYOffset + 'px'; //Top Position of Mouse Pointer 
 
\t \t \t document.getElementById(control).style.position = 'absolute'; 
 
\t \t \t document.getElementById(control).style.display = 'inline'; 
 
\t \t \t document.getElementById(control).style.left = posx; 
 
\t \t \t document.getElementById(control).style.top = posy; 
 

 
\t \t \t a.style.position = 'absolute'; 
 
\t \t \t a.style.display = 'inline'; 
 
\t \t \t a.style.left = posx; 
 
\t \t \t a.style.top = posy; 
 
\t \t \t var jqContext = '#' + id; 
 

 
\t \t \t var view = document.getElementById("viewId"); 
 
\t \t \t view.href = "Chat.aspx?RecID=" + id; 
 
\t \t } 
 
\t \t function HideMenu(control) { 
 

 
\t \t \t document.getElementById(control).style.display = 'none'; 
 
\t \t } 
 
     
 
\t </script> 
 
</head> 
 
<body onclick="HideMenu('contextMenu');" oncontextmenu="return false"> 
 
    <form id="form1" runat="server"> 
 
    <div> 
 
\t \t <ul> 
 
\t \t \t <%foreach(UserCredential u in Global.Users) %> 
 
\t \t \t <%{ %> 
 
\t \t \t \t <li onmousedown="HideMenu('contextMenu');" onmouseup="HideMenu('contextMenu');" oncontextmenu="ShowMenu('contextMenu', event, 3);"><%= u.Name %></li> 
 
\t \t \t <%} %> 
 
\t \t </ul> 
 
    </div> 
 

 

 
\t <br /> 
 
    <br /> 
 
    <div style="display:none; " id="contextMenu"> 
 
     <table border="0" cellpadding="0" cellspacing="0" 
 
      style="border: thin solid #808080; cursor: default;" width="100px" 
 
      bgcolor="White"> 
 
      <tr> 
 
       <td > 
 
        <a href="#" id="viewId">Send a Friend Request</a> 
 
        </td> 
 
      </tr> 
 
      <tr> 
 
       <td > 
 
        <a href="#" id="editId">Message</a> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </div> 
 
    </form> 
 
</body> 
 
</html>

空です:

+0

を満たしている場合は、のコードを含めることができます知ってみましょうそれコンテキストメニューと登録されているイベントを表示しますか? – Rex

+0

私はまだコードを書いていないので、コードを修正する方法については尋ねません。私はこれをどうやって行うのかを知りたいだけです(つまり、ユーザの名前ではなくContextItemへのハイパーリンクをどのように付け加えるか)。 – Xigaphactus

答えて

-1

は私はこれがあなたの期待

function ShowMenu(control, e, id) { 
 
      var posx = e.clientX + 'px'; 
 
      var posy = e.clientY + 'px'; 
 
\t \t \t var a = document.getElementById(control); 
 
\t \t \t 
 
      a.style.position = 'absolute'; 
 
      a.style.display = 'inline'; 
 
      a.style.left = posx; 
 
      a.style.top = posy; 
 
      var jqContext = '#' + control; 
 
      
 
\t \t \t var view = document.getElementById("viewId"); 
 
\t \t \t view.href = "http://www.google.com/search?q=" + id; //Construct your URL based on parameter 
 
\t \t \t 
 
     } 
 
     function HideMenu(control) { 
 
      document.getElementById(control).style.display = 'none'; 
 
     } 
 
    
.ContextItem 
 
     { 
 
      background-color:White; 
 
      color:Black; 
 
      font-weight:normal; 
 
      
 
      } 
 
     .ContextItem:hover 
 
     { 
 
      background-color:#0066FF; 
 
      color:White; 
 
      font-weight:bold; 
 
      
 
     } 
 
     .detailItem 
 
     { 
 
      background:transparant; 
 
      
 
     } 
 
     .detailItem:hover 
 
     { 
 
      background-color:#FEE378; 
 
      border: 1px outset #222222; 
 
      font-weight:bold; 
 
      cursor:default; 
 
     }
<body onclick="HideMenu('contextMenu');" oncontextmenu="return false"> 
 
    <div onmousedown="HideMenu('contextMenu');" 
 
      onmouseup="HideMenu('contextMenu');" 
 
     oncontextmenu="ShowMenu('contextMenu',event,1);" 
 
     class="detailItem"> 
 
    User 1 
 
     </div> 
 
     <div onmousedown="HideMenu('contextMenu');" 
 
      onmouseup="HideMenu('contextMenu');" 
 
     oncontextmenu="ShowMenu('contextMenu',event,2);" 
 
     class="detailItem"> 
 
    User 2 
 
     </div> 
 
     <div onmousedown="HideMenu('contextMenu');" 
 
      onmouseup="HideMenu('contextMenu');" 
 
     oncontextmenu="ShowMenu('contextMenu',event,3);" 
 
     class="detailItem"> 
 
    User 3 
 
     </div> 
 
    <br /> 
 
    <br /> 
 
    <div style="display:none; " id="contextMenu"> 
 
     <table border="0" cellpadding="0" cellspacing="0" 
 
      style="border: thin solid #808080; cursor: default;" width="100px" 
 
      bgcolor="White"> 
 
      <tr> 
 
       <td > 
 
        <a href="#" id="viewId"> View</a> 
 
        </td> 
 
      </tr> 
 
      <tr> 
 
       <td > 
 
        <a href="#" id="editId">Edit</a> 
 
       </td> 
 
      </tr> 
 
     </table> 
 
    </div> 
 
</body>

+0

だから私は1,2,3をforeachループに置き換えますか? – Xigaphactus

+0

はい。私はユーザーのリンクをハードコードしました。そのロジックをforeachループで置き換えることができます。 – Rex

+0

"oncontextmenuは要素div/liの有効な属性ではありません"と表示されています。 – Xigaphactus

関連する問題