ListItem bearbeiten oder hinzufügen, um in ApplicationPage mit ListFormWebPart oder DataFormWebPart aufzulisten, aber wie?

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

Frage

Ich möchte diese programmgestützte Basis auf der ListId und ListItemid (zum Bearbeiten) machen. Wenn ich also DataFormWebPart verwenden möchte Modell. Ich kann die Zielliste in der Abfragezeichenfolge ändern, aber die Schnittstelle wird sich nicht ändern, da die XSL -Eigenschaft nicht definiert ist:

    <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>

DataFormWebPart wird mir also nicht helfen. Die nächste Option ist ListFormWebPart, für das die XSL -Eigenschaft nicht erforderlich ist und in der Laufzeit mit dem Objektmodell wie folgt erstellt werden kann:

  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);

Dieser Code funktioniert gut in WebPart, aber nicht in Application Page, und ich muss sagen, dass ich alle Namespaces und Referenzen, die dieses Webpart benötigt, zur Seite hinzugefügt habe.
Dies gibt mir diesen Fehler:

System.NullReferencexception: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt. unter microsoft.sharepoint.webPartPages.ListformWebPart.onprerender (eventArgs e) at system.web.ui.control.Prerenderrecursivternal () at system.web.ui.control.PrerendercursiveInternal () at System.Web.Ui. at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Control.PreRenderRecursiveInternal() at System .Web.ui.control.PrerenderrecursiveInternal () at system.web.ui.page.ProcessRequestMain (Boolean includedagesBeForeasyncPoint, boolean includedagesFterasyncpoint)

Ich stelle diesen Code ein und teste in Page_Init, Page_Load und ListFormWebPart_Init Ereignisse, aber kein Erfolg. Ich benutze SharePoint Designer und erstelle ListFormWebPart Kopieren Sie es dann und kleben Sie sie auf meine Anwendungsseite und fügen Sie auch die dafür benötigte Baugruppe hinzu, aber auch nicht zu einem Erfolg.
Ich weiß nicht, was das Problem ist. Bitte geben Sie den richtigen Ansatz an, wenn meins nicht.

War es hilfreich?

Lösung

Zunächst werden OOTB -Webparts nicht offiziell unterstützt, um auf Antragsseiten in SharePoint zu arbeiten. Wie mir gesagt wurde, konnte es aus dem offiziellen MS -Kurs erfahren werden 10232.

Und trotz dieser Webparts auf Anwendungsseiten funktioniert in einigen Fällen viele potenzielle Probleme mit ihnen. Wenn Sie beispielsweise XSllink für ein OOTB XSLT-WebPart wie DFWP, DVWP oder XLV angeben, wird es versucht, es zu zwischenstrahlen, und wird schließlich mit Ausnahme fehlschlagen. Außerdem haben Menschen häufig Probleme mit Standard -Webparts -Ribbon -Funktionen auf Anwendungsseiten, wenn einige Schaltflächen ausgegraut sind.

Selbst wenn Sie Ihr Problem heute beheben, werden Sie wahrscheinlich morgen ein Paar bekommen.

Im Grunde genommen würde ich Ihnen empfehlen, eine Site -Seite zu erstellen und dort die gewünschten Webpartien zu platzieren. Wenn Sie zusätzliche programmatische Aktionen benötigen, können Sie Ihr benutzerdefiniertes Webpart auf derselben Seite platzieren und alles ausführen, was Sie benötigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top