2015-10-09 52 views
1

这是一个Sitecore的8更新2 MVC网站的一部分,我延长了TreelistEx场SheerResponse不会关闭

我创建了一个sheerrepsonse modaldialog,这段代码调用。

namespace be.absi.kbs.extensions 
{ 
    class AbsiTreeListEx : TreelistEx, IMessageHandler 
    { 

    void IMessageHandler.HandleMessage(Message message) 
    { 
     if (message == null) 
     { return; } 

     if (message["id"] == null) 
     { return; } 

     if (!message["id"].Equals(ID)) 
     { return; } 

     var fieldInfo = _fieldInformation[message["id"]]; 

     switch (message.Name) 
     { 
      case "treelist:edit": 
       var nvcEdit = new NameValueCollection { { "source", fieldInfo.Source } }; 
       Sitecore.Context.ClientPage.Start(this, "Edit", nvcEdit); 
       break; 

      case "absitreelistex:absiadd": 
       var nvcAdd = new NameValueCollection {{"clientFieldId", message["id"] } }; 
       Sitecore.Context.ClientPage.Start(this, "AddItem", nvcAdd); 
       break; 
     } 
    } 

    protected void AddItem(ClientPipelineArgs args) 
    { 
     if (args.IsPostBack) 
     { 
      // Get information from args 
     } 
     else 
     { 
      SheerResponse.ShowModalDialog("/QuickContact.html",true); 
      args.WaitForPostBack(); 
     } 
    } 
    } 
} 

这是modaldialog的HTML:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<base target="_self"> 
<title></title> 
<script type="text/javascript"> 
    function sendResponse() { 
     var o = new Object(); 
     o.forename = document.getElementById("FirstNameId").value; 
     o.surname = document.getElementById("LastNameId").value; 
     o.phone = document.getElementById("PhoneId").value; 
     window.returnValue = o; 
    } 

    function OK() { 
     sendResponse(); 
     window.close(); 
     self.close(); 
     document.close(); 
    } 
</script> 
</head> 
<body onbeforeunload="sendResponse()"> 
<label>First Name: </label><input type="text" id="FirstNameId" /><br /> 
<label>Last Name: </label><input type="text" id="LastNameId" /><br /> 
<label>Phone: </label><input type="text" id="PhoneId" /><br /> 
<a href="#" id="btnSaveImage" target="_self" onclick="OK()"> 
    OK 
</a><br /> 
<input type="button" value="OK" onclick="OK()" /> 

我想要的是用户在几个领域的填补。当用户点击OK时,返回值并关闭窗口。 我所缺少的是对话屏幕的自动关闭。

我已经尝试了几乎所有可以在网上找到的东西,但它仍然无法正常工作。

有谁知道还有什么我可以尝试?

+0

你可以发布他包含args.WaitForPostBack()和处理响应的代码的整个方法。这是需要更改的地方 –

+0

已添加代码@JonathanRobbins – Timon

+0

您是否尝试在代码的'args.IsPostPostback'内部调用'SheerResponse.CloseWindow()'? – jammykam

回答

0

我找到了一种方法来关闭由Sheerresponse创建模态对话框:

window.parent $( 'UI的对话内容:可见。 ')对话框(' 亲密');