2009-04-29 4 views
5

사용자 지정 새 양식을 사용하여 Sharepoint 내에 목록이 있습니다. 사용자 지정 목록 양식 컨트롤 (목록에 대한 "새 항목 양식")을 추가하고 SaveButton을 표준 입력 HTML 단추로 변경했습니다. 이 같이 작동셰어 포인트 목록 새 ID로 리디렉션

onclick="javascript: {ddwrt:GenFireServerEvent('__commit;__redirect={NewFormWizard2.aspx?id=}')}" 

데이터를 저장하고 NewFormWizard2.aspx ID = 페이지로 리디렉션 : 다음과 같이 인 '온 클릭'이벤트를 추가했다.

생성 된 항목의 ID를 리디렉션 된 페이지로 전달하려면 어떻게해야합니까? 양식이 완료되면

따라서는 23

답변

0

는 순수 자바 스크립트 (JQuery와)과 http://darrenjohnstone.net/에서 SPAPI 코드를 사용하여 접근 방법을 발견했다.

목록은 두 개의 필드, 제목과 BodyCopy

내가 thewn 한 핸드 크림이 들어 텍스트 필드와 제목을 묻는 폼을 제출하면 submit 버튼은 다음과 같은 함수를 호출합니다. (ServerAddress와 LIST_question은 자신 만의 세부 정보로 업데이트해야 함).

이 함수는 LISTS.ASMX 내의 SOAP 서비스를 사용하여 세부 정보를 업로드하고 응답을 사용하여 새 항목의 ID를 가져 와서 페이지를 리디렉션합니다.

var LIST_question = '{xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'; 
var ServerAddress = 'http://xxx/'; 

function submitQuestion() 
    { 
    var title = new String($("#title").val()); 
    var t = new String($("#question").val()); 
    t=t.trim(); 
    if(t=="") 
     return; 

    title=title.trim(); 
    if(title=="") 
     return; 


    var lists = new SPAPI_Lists(ServerAddress) ; 
    // 
    var newItem = { Title : title, BodyCopy : t}; 
    var items = lists.quickAddListItem(LIST_question, newItem); 
    var id=-1; 
    if (items.status == 200) 
    { 
     var rows = items.responseXML.getElementsByTagName('z:row'); 
     if(rows.length ==1) 
     { 
      var r = rows[0]; 
      var id = r.getAttribute('ows_ID'); 
      window.location.href='DispForm.aspx?ID='+id; 

     } 
     else 
     { 
      alert("Error: No row added"); 
     } 


    } 
    else 
    { 

     alert('There was an error: ' + items.statusText); 
     return; 
    } 
} 
0

나는 ID 당신이에서 자바 스크립트를 호스팅하는 페이지에 존재하는 곳에 확실하지 않다 = NewFormWizard2.aspx? ID로 리디렉션합니다. 그것은 쿼리 문자열이나 페이지의 필드에 나타 납니까?

요청 또는 응답에 항목을 식별 할 수있는 내용이 없습니다. 웹로드 테스팅을 할 때이 문제가 발생했습니다.

나는 webservices를 사용하여 항목을 생성 할 때만 xml을 반환한다고 제안 할 수 있습니다.

+0

이것은 새 목록 항목 용이므로 페이지에 ID가 없습니다. ID가 다시 게시 될 때 생성되므로 리디렉션 URL은 항목이 커밋 된 후 새 항목의 ID로 채워 져야합니다. 나는 여기에 많이 묻는거야? 감사합니다. – TheRealQuagmire

0

이 답변은 "새로운 양식"문제를 해결하지는 않지만 기존 목록 항목이 포함 된 화면의 구문에 도움이 될 수 있습니다.

이 작업은 SharePoint (MOSS 2007) 환경에서 신속하게 테스트되었습니다.

의 onclick = "자바 스크립트 {ddwrt : GenFireServerEvent (CONCAT는 ('__ 커밋 __ = {NewFormWizard2.aspx ID = 리디렉션?'/ dsQueryResponse/행/행/@의 ID))}"

CONCAT 연 구문 프로세서에 작은 따옴표로 묶인 값을 결합하도록 지시하는 XSLT 명령입니다. 나는 내가 여기에서 찾은 정보로부터이 답을 수정했다. , SharePoint 디자이너에서 1가 새 페이지를 만들 "LastItem.aspx"예를 들어 그것을 전화로에 DataView를 배치 :이 도움이 될 것입니다 희망 사용자 지정 목록 양식 http://wssdevelopment.blogspot.com/2007_04_01_archive.html

0

에서

로드 값 대상 목록 항목에 대한 단일 양식보기. 2 단 하나의 레코드로 페이징을 제한하고, ID별로 정렬을 지정하고 내림차순으로 정렬하고 [현재 사용자]가 작성한 항목 만 표시하도록 목록을 필터링하십시오. 3 이제 쿼리 문자열을이 페이지에 전달할 필요가 없습니다. 목록의 NewForm.aspx에있는 기본 "OK"버튼을 표준 HTML 입력 버튼으로 바꾸고 "onclick ="javascript : {ddwrt : GenFireServerEvent (concat ('__ commit; __ redirect = {LastItem.aspx} 목록에 새 항목을 제출하면 생성 된 항목의 편집보기로 리디렉션됩니다. 저장 버튼을 클릭 한 후 LastItem.aspx의 저장 버튼을 사용하여 다른 페이지로 리디렉션 할 수 있습니다.

2

jtherkel이 가까이이 사용하는 자바 스크립트를 달성 할 수 있지만, 실종 된 리디렉션 URL의 끝에 '}'. 아래에 여분의 회의실을 사용했습니다.

<input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={lists/MyListName/DispForm.aspx?ID=',/dsQueryResponse/Rows/Row/@ID,'}'))}" /> 
관련 문제