none
добавление Attachment на custom web form RRS feed

  • Вопрос

  • Доброго времени суток! Такая ситуация: создаю свою web form в VS2010 для формы создания item в списках. Стандартная не подходит! Делаю с элементами ASP.NET и кнопка сохранить тоже моя. Но нужно добавить прикрепление файлов. Кое-как смог добавить Sharepoint:formtoolbar и т.д. Короче визуально всё выглядит как на стандартной форме, но не сохраняет... я не знаю, что нужно прописать на кнопку сохранить, чтобы attachment сохранялся. остальные поля без проблем сохраняются! Кнопка aspшная и пишу сохранение на c#. Помогите! Очень надо!  
    10 августа 2011 г. 10:52

Ответы

Все ответы

  • SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName);
     byte[] bData = file.OpenBinary();
     
    item.Attachments.Add(fileName, bData);
     
    item.Update();
    

    Я так делал для того, чтобы вставить вложение из другого элемена! замените sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName); на получения вашего файла и все!
    10 августа 2011 г. 11:48
  • как добавить в item я знаю, но я не могу вытащить данные(файлы) из attachmentfield или может откуда из другого места. Я не знаю куда Sharepoint:formtoolbar записывает файлы!
    12 августа 2011 г. 7:57
  • Я немного не понял, вы смогли добавить фаил в attachment, а дальше вам что с ним нужно сделать?
    12 августа 2011 г. 9:51
  • к себе на форму я добавил вот такой код(взял из стандартной формы)

    <xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">

        <xsl:template name="dvt_1">
            <div>
                <span id="part1">
                   
                </span>
                <SharePoint:AttachmentUpload ID="AttachmentUpload1" runat="server" ControlMode="New"/>
               
            </div>
        </xsl:template>  

        <xsl:template name="dvt_1.rowedit">
            <xsl:param name="Pos" select="position()"/>
            <tr>
                <td>
                        <tr id="idAttachmentsRow">
     <td nowrap="true" valign="top" class="ms-formlabel" width="20%">
       <SharePoint:FieldLabel ID="FieldLabel1" ControlMode="New"
        FieldName="Attachments" runat="server" ItemId="1"
        ListId="b0e4f643-318d-43bc-a370-ce12f8a65f96"/>
      </td>
      </tr>   
      <tr>   
        <td>
       <SharePoint:FormField runat="server" id="AttachmentsField" ControlMode="New"
        FieldName="Attachments"/>
        </td>
         </tr>   
       
                </td>
            </tr>
        </xsl:template>
    </xsl:stylesheet>

    Вот этот код позволяет открыть окно выбора файла и потом отображает выбранные файлы.

    А когда нажимаю сохранить те файлы которые я выбрал не сохраняются в item. Кнопка сохранить не стандартная Sharepoint, а моя и в коде этой кнопки прописано сохранение всех полей кроме этого (Attachment). Вот я и не знаю, что туда прописать или как еще сделать, чтобы то что я выбрал на форме записывалось в item при сохранении...

    15 августа 2011 г. 8:02
  • Это всё способы когда известны имена файлов и их местонахождение!!! Я именно и не знаю ни filename, ни filepath. Я не знаю как из этого <SharePoint:FieldLabel ID="FieldLabel1" ControlMode="New"
        FieldName="Attachments" runat="server" />

    или из этого

    <SharePoint:FormField runat="server" id="AttachmentsField" ControlMode="New"
        FieldName="Attachments"/>

    вытащить название и путь файла или сам файл.

    По идеи в SharePoint:FormField прописывается FieldName, но что это значит не понятно.

    Я пытался сделать так:

    SPList targetList = web.Lists["Входящие"];
                    SPListItem newItem = targetList.Items.Add();



                   
                    newItem["sdate"] = this.dtcRegDate.SelectedDate;
                    newItem["outnum"] = this.txtOutNum.Text;
                    ...
                    newItem["Attachments"] = AttachmentsField.Value;

                    newItem.Update();

    но он ругается на это!!!

    15 августа 2011 г. 10:12
  • Вообще эта проблема распространенная! И нигде толком не написано как добавить attachment на custom list form.

    Один человек (Marc Davis) в блоге полностью описал как это сделать, но этот блог сейчас удален! Может если у кого-то есть инфа, как он делал или ссылка на существующую его статью, тоже скиньте сюда.

    15 августа 2011 г. 10:16
  • Здравствуйте,

    посмотрите ресурсы ниже:

    How to add a FormToolbar with upload functionality to a custom form

    programatically add attachment in custom list in sharepoint 2010


    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий.
    • Предложено в качестве ответа Roman Zhukov 30 августа 2011 г. 12:11
    • Помечено в качестве ответа Dmitry Davydov 30 августа 2011 г. 13:46
    22 августа 2011 г. 13:41