Modifica o Aggiungi ListItem alla lista in ApplicationPage con ListFormWebPart o DataFormWebPart, ma come?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/19617

Domanda

Voglio fare questo a livello di codice di base sulla ListId e ListItemId (per la modifica) quindi, se voglio usare DataFormWebPart devo impostare il XSL proprietà in modalità di progettazione e non so come raggiungere il XSL di List Target in Runtime e modello a oggetti. posso modificare l'elenco di destinazione nella query di stringa, ma il non interfaccia cambierà perché la proprietà XSL non è definito:

    <WebPartPages:DataFormWebPart id="dataForm" runat="server" IsIncluded="True" NoDefaultStyle="TRUE" 
    ViewFlag="8" Title="TestParnian" PageType="PAGE_EDITFORM" ListName="{8965AE3A-CCA0-4502-B7CE-056CD670C016}" Default="FALSE" 
    DisplayName="TestParnian" __markuptype="vsattributemarkup" __WebPartId="{2CDB3F60-D76F-4410-AEDA-28D9D5815854}">
    <DataSources>
        <SharePoint:SPDataSource id="TestParnian2" runat="server" DataSourceMode="ListItem" UseInternalName="true" 
            UseServerDataFormat="True" 
            selectcommand="&lt;View&gt;&lt;Query&gt;&lt;Where&gt;&lt;Eq&gt;&lt;FieldRef Name=&quot;ContentType&quot;/&gt;&lt;Value Type=&quot;Text&quot;&gt;مورد&lt;/Value&gt;&lt;/Eq&gt;&lt;/Where&gt;&lt;/Query&gt;&lt;/View&gt;">
        <SelectParameters>
            <WebPartPages:DataFormParameter Name="ListItemId" ParameterKey="ListItemId" 
                PropertyName="ParameterValues" DefaultValue="0"/>
            <WebPartPages:DataFormParameter Name="ListID" 
                ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{8965AE3A-CCA0-4502-B7CE-056CD670C016}"/>
            <WebPartPages:DataFormParameter Name="MaximumRows" ParameterKey="MaximumRows" PropertyName="ParameterValues" 
                DefaultValue="10"/>
        </SelectParameters>
        <InsertParameters>
            <WebPartPages:DataFormParameter Name="ListItemId" ParameterKey="ListItemId" 
                PropertyName="ParameterValues" DefaultValue="0"/>
            <WebPartPages:DataFormParameter Name="ListID" 
                ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{8965AE3A-CCA0-4502-B7CE-056CD670C016}"/>
        </InsertParameters>
        <UpdateParameters>
            <WebPartPages:DataFormParameter Name="ListItemId" ParameterKey="ListItemId" 
                PropertyName="ParameterValues" DefaultValue="0"/>
            <WebPartPages:DataFormParameter Name="ListID" 
                ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{8965AE3A-CCA0-4502-B7CE-056CD670C016}"/>
        </UpdateParameters>
        </SharePoint:SPDataSource>
    </DataSources>

    <ParameterBindings>
            <ParameterBinding Name="ListItemId" Location="QueryString(ID)" DefaultValue="0"/>
            <ParameterBinding Name="ListID" Location="QueryString(ListID)" DefaultValue="{8965AE3A-CCA0-4502-B7CE-056CD670C016}"/>
            <ParameterBinding Name="MaximumRows" Location="None" DefaultValue="10"/>
            <ParameterBinding Name="dvt_apos" Location="Postback;Connection"/>
            <ParameterBinding Name="ManualRefresh" Location="WPProperty[ManualRefresh]"/>
            <ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/>
            <ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/>
    </ParameterBindings>
        <XSL> The XSL Property that needs to be define. </XSL>
</WebPartPages:DataFormWebPart>

Quindi DataFormWebPart gonna non aiuta me.The opzione successiva è ListFormWebPart che non ha bisogno della proprietà XSL e può essere creare in fase di esecuzione con il modello a oggetti in questo modo:

  int itemId = listItem != null ? int.Parse(listItem.ID.ToString()) : -1;
  ListFormWebPart lstFormList = new ListFormWebPart();

  lstFormList.ListName = lst.ID.ToString("B").ToUpper();
  if (itemId != -1)
  {
     lstFormList.ListItemId = itemId;
     lstFormList.PageType = PAGETYPE.PAGE_EDITFORM;
     lstFormList.ControlMode = SPControlMode.Edit;
     lstFormList.TemplateName = "ListForm";
     lstFormList.FormType = 6;
     lstFormList.Title = "Edit " + lst.Title;
  }
  else
  {
     lstFormList.ControlMode = SPControlMode.New;
     lstFormList.PageType = PAGETYPE.PAGE_NEWFORM;
     lstFormList.TemplateName = "ListForm";
     lstFormList.FormType = 8;
     lstFormList.Title = "Add " + lst.Title;
  }
  lstFormList.ListTitle = lst.Title;
  lstFormList.AllowClose = false;
  lstFormList.AllowConnect = false;
  lstFormList.AllowEdit = false;
  lstFormList.AllowZoneChange = true;
  lstFormList.EnableViewState = true;
  lstFormList.HideIfNoPermissions = true;

  Panel1.Controls.Add(lstFormList);

questo lavoro codice di bene in WebPart ma non in ApplicationPage e devo dire che ho aggiunto tutti i namespace e riferimenti che questo bisogno WebPart, alla pagina.
questo mi dà questo errore:

System.NullReferenceException: Il riferimento non impostato a un'istanza di un oggetto. a Microsoft.SharePoint.WebPartPages.ListFormWebPart.OnPreRender (EventArgs e) a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Control.PreRenderRecursiveInternal () a System.Web.UI.Page.ProcessRequestMain (booleano includeStagesBeforeAsyncPoint, booleano includeStagesAfterAsyncPoint)

ho messo e testare il codice negli eventi Page_Init, Page_Load e ListFormWebPart_Init ma non alcun successo. Io uso SharePoint Designer e creare ListFormWebPart e quindi copiarlo e incollato alla mia applicazione pagina e anche aggiungere l'assemblea necessaria per esso, ma anche non alcun successo.
non so qual è il problema, si prega di dare il giusto approccio, se il mio non è.

È stato utile?

Soluzione

Prima di tutto, WebParts OOTB non sono ufficialmente supportato per lavorare su pagine dell'applicazione in SharePoint. Come mi è stato detto, potrebbe essere imparato da MS ufficiali corso 10232 .

E nonostante che webparts in pagine di applicazione in realtà funziona in alcuni casi, ci sono molti potenziali problemi con loro. Per esempio, se si fornisce XslLink ad un OOTB XSLT-webpart, come DFWP, DVWP o XLV, cercherà di memorizzare nella cache, e finirà per fallire con l'eccezione 'ha tentato di utilizzare un oggetto che ha cessato di esistere'. Inoltre, le persone hanno spesso problemi con la funzionalità webparts nastro standard su pagine dell'applicazione, quando alcuni pulsanti sono disattivati.

Quindi, anche se a risolvere il problema di oggi, si sarà probabilmente ottenere un paio di domani.

Quindi, in sostanza, vi consiglio di creare una pagina del sito e inserire il vostro funzionalità webParts desiderato lì. E se avete bisogno di alcune azioni programmatiche aggiuntive, è possibile posizionare il WebPart personalizzato sulla stessa pagina ed effettuare tutto il necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top