2011-08-12 35 views
0

我們有一個定製的asp.net web表單頁面(由sharePoint生成)。該頁面已經定製了一個按鈕,打開一個窗口使用javascript到第二個asp.net頁面進行搜索和asp.net gridview選擇過程。也許這個平臺並不重要,但是第二個頁面會在JavaScript上動態地將選定的信息從選定的itemon網格發送到第一頁的表單表單字段。該代碼在下面,並且工作得很好。jquery彈出窗口替代javascript窗口解決方案,我們正在使用SharePoint

有人可以提出一個jQuery這樣的反應嗎?如果使用Google網站上的jquery,我需要一個jQuery插件嗎?

理想情況下,我們想要的是彈出一個窗口,該窗口允許我們搜索外部數據源,然後從找到的條目中進行選擇並自動填充SharePoint表單列。我們的JavaScript代碼確實有效。

<a href="javascript:PS=window.open('PS.aspx','PS','width=800,height=600,scrollbars=1');PS.focus()"> 
CLICK HERE TO SEARCH FOR PHYSICIAN 
</a> 

<script language="VB" runat="server"> 

    Protected Sub PhysicianGrid_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PhysicianGrid.SelectedIndexChanged 
     'session("firstname") = PhysicianGrid.SelectedRow.Cells.Item(2).Text 
     Dim strjscript as string = "<script language=""javascript"">" 
     strjscript = strjscript & "passvalue('lastname','"+PhysicianGrid.SelectedRow.Cells.Item(1).Text+"');" 
     strjscript = strjscript & "passvalue('firstname','"+PhysicianGrid.SelectedRow.Cells.Item(2).Text+"');" 
     strjscript = strjscript & "passvalue('Phone','"+PhysicianGrid.SelectedRow.Cells.Item(8).Text+"');" 
     strjscript = strjscript & "<" + "/script>" 
     Literal1.text = strjscript 
    End Sub 
</script> 

回答

1

window.opener是一個對象,指向任何窗口/標籤打開當前窗口。您不必生成JavaScript即時傳遞值。一個簡單的

window.opener.lastname = ... 
window.opener.firstname = ... 

應該做的父窗口設置這些值的把戲,然後函數調用,以指示父,現有的數據的:

window.opener.dataIsReady(); 

這同樣適用於傳遞數據從父窗口到子窗口:

w = window.open(...); 
w.somevar = somevalue; 
w.someFunc(); 
+0

所面臨的挑戰是從jQuery的搶奪選擇行項目要求我找到的東西在作爲選擇由VS服務器端事件在那裏我可以生成與我的客戶端代碼改變一個HTML表(由控制渲染)設置服務器方便的綁定值。我認爲你是對的,我不應該傳遞這樣的值,並應該能夠在生成的代碼中使用window.opener - 期待測試它。 – o365spo

+0

passvalue是孩子上的一個js函數,它在父級上找到一個控件並設置一個值。因爲html控件是在運行時由SharePoint生成的,所以我不能說爲這個控件設置了值。結果我的passvalue()函數使用window.opener.document.getElementsByTagName(xxx) – o365spo

1

您可以嘗試使用jquery來改進您的代碼,如下所示;

向此錨點添加類名稱或ID,並使用jquery附加click事件處理程序,而不是使用href。

<a class="searchPhysician" href="javascript:void(0);">CLICK HERE TO SEARCH FOR PHYSICIAN</a> 


$(function(){ 

    $("a.searchPhysician").click(function(){ 
     var PS = window.open('PS.aspx','PS','width=800,height=600,scrollbars=1'); 

     PS.focus();//Sometimes in IE this will fail so its better you delay sometime and focus the window. 
     //setTimeout(function(){ 
     // PS.focus(); 
     //}, 200); 

     return false; 
    }); 
});