2009-04-29 27 views
5

Tôi có một danh sách trong Sharepoint, sử dụng một biểu mẫu tùy chỉnh mới Tôi đã thêm điều khiển biểu mẫu danh sách tùy chỉnh ("Biểu mẫu mục mới" cho danh sách) và thay đổi nút SaveButton thành nút nhập HTML chuẩn, và thêm sự kiện 'onclick' như sau:Danh sách Sharepoint chuyển hướng với id mới

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

Điều này hoạt động như khi lưu dữ liệu và chuyển hướng đến NewFormWizard2.aspx? id = page.

Làm cách nào để nhận ID của mục được tạo tới trang được chuyển hướng?

Như vậy một khi mẫu được hoàn thành nó sẽ chuyển hướng đến NewFormWizard2.aspx? Id = 23

Trả lời

0

tìm thấy một cách tiếp cận sử dụng javascript tinh khiết (JQuery) và mã SPAPI từ http://darrenjohnstone.net/.

danh sách này bao gồm hai lĩnh vực, tiêu đề và BodyCopy

tôi đã thewn crea một biểu mẫu yêu cầu một tiêu đề và một câu hỏi, cả hai trường văn bản, sau đó nút gửi gọi các chức năng sau đây: (lưu ý rằng ServerAddress và LIST_question cần phải được cập nhật cho các chi tiết của riêng bạn).

Hàm sau đó tải lên các chi tiết bằng dịch vụ SOAP trong LISTS.ASMX và sử dụng phản hồi nhận ID của mục mới và chuyển hướng trang.

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

Tôi không chắc chắn nơi ID sẽ tồn tại trên trang web mà bạn đăng cai Javascript từ. Nó có xuất hiện trong chuỗi truy vấn hoặc trên một trường trên trang không?

Không có gì trong yêu cầu hoặc phản hồi sẽ xác định mục. Tôi đã gặp vấn đề này khi thực hiện một số tải trọng web.

Tôi chỉ có thể đề xuất rằng bạn tạo mục bằng cách sử dụng dịch vụ web vì điều đó mang lại cho bạn một số xml trả về.

+0

Đây là mục danh sách mới vì vậy nó không có id trên trang. Tôi sẽ có mặc dù ID sẽ được tạo khi đăng lại do đó URL cho chuyển hướng sẽ cần phải "điền" bằng ID của mặt hàng mới sau khi mục đã được cam kết. Tôi có yêu cầu nhiều ở đây không? Trân trọng – TheRealQuagmire

0

Câu trả lời này không giải quyết được vấn đề "biểu mẫu mới", nhưng nó có thể giúp những người khác có cú pháp cho màn hình chứa các mục danh sách hiện có.

Tôi đã thử nghiệm điều này một cách nhanh chóng trong môi trường SharePoint (MOSS 2007) của mình.

onclick = "javascript: {ddwrt: GenFireServerEvent (concat ('__ cam kết; __ redirect = {id = NewFormWizard2.aspx?',/DsQueryResponse/Hàng/Row/@ ID))}"

Cú pháp concat là một lệnh XSLT báo cho bộ xử lý kết hợp các giá trị được kèm theo trong các dấu nháy đơn. Tôi đã điều chỉnh câu trả lời này từ thông tin tôi tìm thấy ở đây.

giá trị tải trong một danh sách Tuỳ chỉnh Mẫu http://wssdevelopment.blogspot.com/2007_04_01_archive.html

0

Tôi hy vọng điều này sẽ hữu ích: 1- Trong SharePoint Designer tạo trang mới, gọi nó là ví dụ "LastItem.aspx" và đặt một dataview vào nó với một dạng xem biểu mẫu cho mục danh sách đích. 2-Giới hạn phân trang thành một bản ghi, đặt sắp xếp theo ID và giảm dần và lọc danh sách để chỉ hiển thị mục được tạo bởi [người dùng hiện tại]. 3-Bây giờ bạn không cần phải chuyển bất kỳ chuỗi truy vấn nào đến trang này. chỉ cần thay thế nút "OK" mặc định trong NewForm.aspx của danh sách bằng nút nhập HTML chuẩn và thêm vào định nghĩa "onclick =" javascript: {ddwrt: GenFireServerEvent (concat ('__ commit; __ redirect = {LastItem.aspx} "Sau khi gửi một mục mới vào danh sách, bạn sẽ được chuyển hướng đến chế độ xem chỉnh sửa của mục đã tạo. Bạn có thể thực hiện tương tự cho nút lưu trong LastItem.aspx để chuyển hướng đến một số trang khác sau khi nhấp vào nút lưu.

2

jtherkel đã được đóng, nhưng đã mất tích một '}' trên cuối url chuyển hướng. Tôi đã sử dụng thêm concat bên dưới

<input type="button" value="Submit" name="btnSave" onclick="javascript: {ddwrt:GenFireServerEvent(concat('__commit;__redirect={lists/MyListName/DispForm.aspx?ID=',/dsQueryResponse/Rows/Row/@ID,'}'))}" /> 
Các vấn đề liên quan