2011-05-02 44 views
0

當我在對話框中運行應用程序頁面(/_layouts/Collages/UploadCollage.aspx)時嵌入代碼的內嵌代碼時出現異常。Sharepoint應用程序頁面僅在對話框中拋出異常

代碼Default.aspx頁面上運行對話框:

<script type="text/javascript"> 

//Handle the DialogCallback callback 
function DialogCallback(dialogResult, returnValue) 
{ 
    // Occurs when upload succeeds 
    if(SP.UI.DialogResult.OK == dialogResult) 
    { 
     this.statusId = SP.UI.Status.addStatus("Publishing complete:", "Published content available on Collages Library", true); 

     SP.UI.Status.setStatusPriColor(this.statusId, "green"); 
    } 
    // Occurs when upload throw exception 
    if(SP.UI.DialogResult.cancel == dialogResult) 
    {  
     this.statusId = SP.UI.Status.addStatus("Publishing failure", "An error occurs. Try again", true); 
     SP.UI.Status.setStatusPriColor(this.statusId, "red"); 
    } 
} 

//Open the Dialog 
function OpenUploadDialog() 
{ 
    SP.UI.Status.removeAllStatus(true); 
    var dialogOptions = SP.UI.$create_DialogOptions(); 
    dialogOptions.width = 600; 
    dialogOptions.height = 800; 
    dialogOptions.url = "/_layouts/Collages/UploadCollage.aspx"; 
    dialogOptions.dialogReturnValueCallback = Function.createDelegate(
        null, DialogCallback); 
    SP.UI.ModalDialog.showModalDialog(dialogOptions); 
}</script><p>?</p> 
<p>Click here to add new collage:</p> 
<a href="javascript:OpenUploadDialog()">Add new collage</a> 

UploadCollage.aspx(內聯代碼只* .aspx文件):

<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %> 
<%@ Import Namespace="System" %> 
<%@ Import Namespace="System.Web.UI" %> 
<%@ Import Namespace="Microsoft.SharePoint" %> 
<%@ Import Namespace="Microsoft.SharePoint.WebControls" %> 
<%@ Import Namespace="System.IO" %> 
<%@ Import Namespace="System.Web" %> 

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %> 
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> 
<%@ Page Language="C#" MasterPageFile="~/_layouts/v4.master" %> 

<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server"> 

<script type="text/C#" runat="server"> 


     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
     private void CreateFolder(string library, string title) 
     { 
      using (SPSite site = SPContext.Current.Site) 
      { 
       using (SPWeb web = site.OpenWeb()) 
       { 
        try 
        { 
         SPList imagesLibrary = web.Lists[library]; 
         SPListItem newFolder = imagesLibrary.Items.Add(imagesLibrary.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, title); 
         newFolder.Update(); 
        } 
        catch (Exception) 
        { 
         // Close dialog - JS exception 
         Context.Response.Write("<script type='text/javascript'>window.frameElement.cancelPopUp();<"+"/script>"); 
         Context.Response.Flush(); 
         Context.Response.End(); 
        } 
       } 
      } 
     } 
     public void Click_saveButton(object sender, EventArgs e) 
     { 
      foreach (IValidator val in Validators) 
      { 
       if (!val.IsValid) 
       { 
        return; 
       } 
      } 

      CreateFolder(libraryNameTextBox.Text, collageTitleTextBox.Text); 

      UploadImage(libraryNameTextBox.Text, image1FileUpload.FileContent, collageTitleTextBox.Text, 
         Path.GetExtension(image1FileUpload.FileName), "a"); 
      UploadImage(libraryNameTextBox.Text, image2FileUpload.FileContent, collageTitleTextBox.Text, 
         Path.GetExtension(image2FileUpload.FileName), "b"); 
      UploadImage(libraryNameTextBox.Text, image3FileUpload.FileContent, collageTitleTextBox.Text, 
         Path.GetExtension(image3FileUpload.FileName), "c"); 
      UploadImage(libraryNameTextBox.Text, image4FileUpload.FileContent, collageTitleTextBox.Text, 
         Path.GetExtension(image4FileUpload.FileName), "d"); 

      // Close dialog - JS commiting 
      Context.Response.Write("<script type='text/javascript'>window.frameElement.commitPopup();<"+"/script>"); 
      Context.Response.Flush(); 
      Context.Response.End(); 
     } 

     public void UploadImage(string library, Stream stream, string folder, string extension, string file) 
     { 
      using (SPSite site = SPContext.Current.Site) 
      { 
       using (SPWeb web = site.OpenWeb()) 
       { 
        try 
        { 
         SPList imagesLibrary = web.Lists[library]; 
         SPFolder collageFolder = imagesLibrary.RootFolder.SubFolders[GetFolderID(imagesLibrary.RootFolder.SubFolders, folder)]; 
         collageFolder.Files.Add(file + extension, stream); 
         collageFolder.Update(); 
        } 
        catch (Exception ex) 
        { 
         // Close dialog - JS exception 
         Context.Response.Write("<script type='text/javascript'>window.frameElement.cancelPopUp();<"+"/script>"); 
         Context.Response.Flush(); 
         Context.Response.End(); 
        } 
       } 
      } 
     } 

     private int GetFolderID(SPFolderCollection folders, string folder) 
     { 
      for (int i = 0; i < folders.Count - 1; i++) 
      { 
       if (folders[i].Item.DisplayName == folder) 
       { 
        return i; 
       } 
      } 
      return 999; 
     } 

</script> 

<SharePoint:UIVersionedContent ID="UIVersionedContent1" UIVersion="4" runat="server"> 
    <contenttemplate> 
     <SharePoint:CssRegistration Name="forms.css" runat="server"/> 
    </contenttemplate> 
</SharePoint:UIVersionedContent> 

</asp:Content> 

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server"> 

<asp:ScriptManagerProxy runat="server" ID="ProxyScriptManager"> 
</asp:ScriptManagerProxy> 

<table width="100%" border="0" cellpadding="0" cellspacing="0"> 
    <tr> 
     <td valign="top"> 
      <table cellspacing="0" cellpadding="4" border="0" width="100%"> 
       <tr> 
        <td class="ms-vb"> 
         &nbsp; 
        </td> 
       </tr> 
      </table> 
      <table border="0" width="100%"> 
       <tr> 
        <td> 
         <table border="0" cellspacing="0" width="100%"> 
          <tr> 
           <td class="ms-formlabel" valign="top" nowrap="true" width="25%"> 
            <b> Library Name:</b> 
           </td> 
           <td class="ms-formbody" valign="top" width="75%"> 
            <asp:TextBox ID="libraryNameTextBox" Text="Collages" runat="server" /><br /> 
            <asp:RequiredFieldValidator ID="libraryNameTextBoxRequiredFieldValidator" 
                   ControlToValidate="libraryNameTextBox" 
                   ErrorMessage="Pole nazwa bibioteki nie może być pusta" 
                   runat="server" /> 
           </td> 
          </tr> 
          <tr> 
           <td class="ms-formlabel" valign="top" nowrap="true" width="25%"> 
            <b> Collage Name:</b> 
           </td> 
           <td class="ms-formbody" valign="top" width="75%"> 
            <asp:TextBox ID="collageTitleTextBox" Text="Kolaż 1" runat="server" /><br /> 
            <asp:RequiredFieldValidator ID="collageTitleRequiredFieldValidator" 
                   ControlToValidate="collageTitleTextBox" 
                   ErrorMessage="Pole tytuł nie może być puste" 
                   runat="server" /> 
           </td> 
          </tr> 
          <tr> 
           <td width="25%" class="ms-formlabel"> 
            <b> Image A:</b> 
           </td> 
           <td width="75%" class="ms-formbody"> 
            <asp:FileUpload ID="image1FileUpload" runat="server" /><br /> 
            <asp:RequiredFieldValidator ID="image1FileUploadRequiredFieldValidator" 
                   ControlToValidate="image1FileUpload" 
                   ErrorMessage="Należy wskazać zdjęcie do załadowania" 
                   runat="server" /> 
           </td> 
          </tr> 
          <tr> 
           <td width="25%" class="ms-formlabel"> 
            <b> Image B:</b> 
           </td> 
           <td width="75%" class="ms-formbody"> 
            <asp:FileUpload ID="image2FileUpload" runat="server" /><br /> 
            <asp:RequiredFieldValidator ID="image2FileUploadRequiredFieldValidator" 
                   ControlToValidate="image2FileUpload" 
                   ErrorMessage="Należy wskazać zdjęcie do załadowania" 
                   runat="server" /> 
           </td> 
          </tr> 
          <tr> 
           <td width="25%" class="ms-formlabel"> 
            <b> Image C:</b> 
           </td> 
           <td width="75%" class="ms-formbody"> 
            <asp:FileUpload ID="image3FileUpload" runat="server" /><br /> 
            <asp:RequiredFieldValidator ID="image3FileUploadRequiredFieldValidator" 
                   ControlToValidate="image3FileUpload" 
                   ErrorMessage="Należy wskazać zdjęcie do załadowania" 
                   runat="server" /> 
           </td> 
          </tr> 
          <tr> 
           <td width="25%" class="ms-formlabel"> 
            <b> Image D:</b> 
           </td> 
           <td width="75%" class="ms-formbody"> 
            <asp:FileUpload ID="image4FileUpload" runat="server" /><br /> 
            <asp:RequiredFieldValidator ID="image4FileUploadRequiredFieldValidator" 
                   ControlToValidate="image4FileUpload" 
                   ErrorMessage="Należy wskazać zdjęcie do załadowania" 
                   runat="server" /> 
           </td> 
          </tr> 
         </table> 
        </td> 
       </tr> 
      </table> 


      <table cellspacing="0" cellpadding="4" border="0" width="100%"> 
       <tr> 
        <td nowrap="nowrap" class="ms-vb"> 
         <asp:Button Text="Cancel" runat="server" ID="cancelButton" OnClientClick="window.frameElement.commitPopup();" /> 
        </td> 
        <td nowrap="nowrap" class="ms-vb" width="99%"> 
         <asp:Button Text="Publish" ID="saveButton" OnClick="Click_saveButton" runat="server" /> 
        </td> 
       </tr> 
      </table> 
     </td> 
     <td width="1%" class="ms-vb" valign="top">&nbsp;</td> 
    </tr> 
</table> 


</asp:Content> 

<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server"> 
    Dodawanie zdjęć do kolażu 
</asp:Content> 

<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" > 
    Dodawanie zdjęć do kolażu 
</asp:Content> 

上面的代碼不工作時,正在運行Sharepoint對話框。它在沒有對話框的情況下運行。 (在Url上:/_layouts/Collages/UploadCollage.aspx)。

任何幫助使它與對話框工作將非常感激。什麼可能是問題的根源?

+0

你可以張貼例外呢? – 2011-05-02 12:44:33

回答

0

問題無法解決。

我曾在我的C#代碼犯的錯誤:

private int GetFolderID(SPFolderCollection folders, string folder) 
    { 
     for (int i = 0; i < folders.Count - 1; i++) 
     { 
      if (folders[i].Item.DisplayName == folder) 
      { 
       return i; 
      } 
     } 
     return 999; 
    } 

它應該是:

private int GetFolderID(SPFolderCollection folders, string folder) 
    { 
     for (int i = 0; i < folders.Count; i++) 
     { 
      if (folders[i].Name == folder) 
      { 
       return i; 
      } 
     } 
     return 999; 
    } 

後更正,應該很好地工作......

相關問題