2012-10-19 4 views
0

jquery를 많이 사용할 수 없으므로 도와주세요. 여기 jQuery UI 대화 상자를 사용하고 있습니다. 내 부분보기가 렌더링 된 대화 상자를 여는 링크가 있습니다. 일부 데이터 행이 기본보기에서ASP.NET MVC에서 jQuery 사용

<div id="transferTo"> 
    Zmena kliniky 
<%= Html.DropDownList("klinika", ViewData["kliniky"] as SelectList)%> 
</div> 

: 같은

$(function() { 
    $("#transferTo").dialog({ 
     autoOpen: false, 
     height: 100, 
     width: 300, 
     modal: true, 
     resizable: false, 
     open: function (event, ui) { 
      $(this).load('<%= Url.Action("TransferTo", "Pacient") %>'); 
     }, 
     buttons: 
     { 
      "Transfer": function() { 
       // do something in database 
       $(this).dialog("close"); 
      }, 
      "Cancel": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
    $("#transferToLink").click(function() { 
     $("#transferTo").dialog("open"); 
     return false; 
    }); 
}); 

<a href="javascript:void()" id="transferToLink">Transfer to</a> 

부분보기 보인다. 각 행은 자신의 ID를 가진 사용자입니다. 그래서 내가 뭘하고 싶은지 ...

내가 링크를 클릭하면 (각 행의 편집 링크를 클릭하면 표시됩니다) jquery 함수에 사용자의 ID를 전달하고 사용해야합니다. 대화 상자의 Click 이벤트 TransferTo. 대화 상자에서 TransferTo 버튼을 클릭하면 대화 상자의 드롭 다운 목록에서 id 매개 변수와 선택한 값을 가져 와서 데이터베이스와 통신하는 C# 함수에서 사용해야합니다 (repository.Edit (id, selectedValue))

답변

1

을 저장하기 위해 여분의 숨겨진 필드를 필요로한다는 것이다.

<a href="#" onclick="openPopup('@id')" id="transferToLink">Transfer to</a> 

자바 스크립트는 다음과 같이한다 :이 도움이

function openPopup(id) { 
    $("#transferTo").dialog({ 
     autoOpen: false, 
     height: 100, 
     width: 300, 
     modal: true, 
     resizable: false, 
     open: function (event, ui) { 
      $.ajax({ 
       "url": yourActionUrl, 
       "data": { myParameter: id }, 
       "type": "POST" 
      }); 
     }, 
     buttons: 
    { 
     "Transfer": function() { 
      // do something in database 
      $(this).dialog("close"); 
     }, 
     "Cancel": function() { 
      $(this).dialog("close"); 
     } 
    } 
    }).open(); 
} 

희망을.

추 신 : autoOpen : true라고 말하면 끝에서 열기 방법은 필수가 아닙니다.

0

링크 편집 버튼의 이름에 ID가 있어야합니다. "lnkEdit_ {id}"와 같은 것입니다. 여기서 {id}는 항목의 실제 ID입니다.

$ ("# transferToLink"). click 이벤트에서 $ (this)의 ID를 구문 분석하고 양식의 HiddenValue 필드에 설정하십시오.

대화 상자의 전송 단추 이벤트에서이 값을 읽습니다.

세련되지는 않았지만이 유형의 설정으로 옵션이 제한되어 있습니다. 이전에는이 ​​기술을 사용했지만 문제가 없었습니다.

이 대화 상자가 열립니다 자바 스크립트 함수를 호출하도록 링크를 구현 : 유일한 부정적인는 임시 값 내가 이런 식으로했을

+0

감사합니다. John. ViewData를 사용하여 작업을 수행했는데 대화 상자의 전송 단추에서 내 기능을 호출하는 방법을 모르는 문제가 있습니다. "Transfer": function() { // 내 함수 저장소 (ViewData [ "id"], selectedValue)를 호출하십시오. $ (this) .dialog ("close"); } 어떻게 C# 함수 (저장소 (ViewData [ "id"], selectedValue)를 호출 할 수 있으며 selectedValue 매개 변수 ($ ("dropdownlist 옵션 : 선택한 .text())를 어떻게 전달할 수 있습니까? ?. 기능 당신은 당신의 컨트롤러 액션에 포스트를 만들기 위해 jQuery를 사용할 수 – Prazi

+0

감사 컨트롤러의 동작은 입력의 유효성을 검사 한 다음 저장소를 호출 이런 식으로 뭔가 :. $ 아약스 ({ 유형 : "POST", URL을 : link.href, success : function (data) { $ (link) .parents ("tr").풀다(); }, 오류 : function (data) { 경고 ("이 사용자는 삭제할 수 없습니다"); } }); –

+0

감사합니다. 지금이 있습니다 : "전송": function() { $ .post ('%% Url.Action ("TransferToOk", "User") %>', { "id": <% = ViewData [ "id"] %> ', "role": $ ("# role option : selected"). text()}, null, "script"); $ (this) .dialog ("close"); } 하지만 드롭 다운 목록에서 첫 번째 옵션을 반환하고 선택하지 않았습니다. 왜 pls를 아십니까? – Prazi

관련 문제