我需要为自定义共享点列表创建一个编辑表单,该列表显示/允许编辑/隐藏基于用户配置文件的某些字段。因此,我创建了一个非默认编辑表单,将其 WebPartPages:DataFormWebPart 复制到我正在开发的自定义 Web 部件解决方案中,并将其部署到共享点,并稍作调整(查询字符串参数重命名为 SPID 而不是 ID,因为 Web 部件用于一个页面库并使用 ID 作为参数给了我各种各样的错误)
现在这个程序对于“新表格”工作得很好,将数据保存到下一个屏幕......所有桃色。
我用一个编辑表单尝试了相同的过程,稍微定制了 XSL(没有什么特别的只是样式和 HTML 表改组),令我惊讶的是,当我加载页面时,我可以看到绑定工作正常,并且我的所有字段都有它们的值。但是当我点击保存时,它会进行一些回发,并且所有字段都会重置为空值,并且在检查没有保存任何值之后。
此时,为了隔离问题,我已经删除了所有自定义项,唯一不同于编辑表单页面和我正在使用的自定义 webpart 是 ListItemId 位置,我将查询参数从“ID”更改为“SPID”。
有什么我应该知道的我显然不知道在自定义 Web 部件中运行 WebPartPages:DataFormWebPart 吗?令人费解的是插入表单有效并且编辑表单显示所有值(绑定OK)但没有保存任何内容
当然,错误日志没有我能找到的任何痕迹,也没有 JavaScript 错误(即开发人员工具调试)
任何指针将不胜感激。
PS:Sharepoint 2013 预置。PS2:这是我的 webpart 的标记:
<WebPartPages:DataFormWebPart runat="server" EnableOriginalValue="False" DisplayName="New Projects" ViewFlag="8" ViewContentTypeId="" Default="FALSE"
ListUrl="" ListDisplayName="" ListName="{5A1F5F46-E308-440D-A7CE-3FF0587D9B4B}" ListId="5a1f5f46-e308-440d-a7ce-3ff0587d9b4b" PageType="PAGE_EDITFORM"
PageSize="-1" UseSQLDataSourcePaging="True" DataSourceID="" ShowWithSampleData="False" AsyncRefresh="False" ManualRefresh="False" AutoRefresh="False"
AutoRefreshInterval="60" NoDefaultStyle="TRUE" InitialAsyncDataFetch="False" Title="New Projects" FrameType="None" SuppressWebPartChrome="False"
Description="" IsIncluded="True" PartOrder="2" FrameState="Normal" AllowRemove="True" AllowZoneChange="True" AllowMinimize="True" AllowConnect="True"
AllowEdit="True" AllowHide="True" IsVisible="True" DetailLink="" HelpLink="" HelpMode="Modeless" Dir="Default" PartImageSmall=""
MissingAssembly="Cannot import this Web Part." PartImageLarge="" IsIncludedFilter="" ExportControlledProperties="True"
ConnectionID="00000000-0000-0000-0000-000000000000" ID="Project_DataFormWebPart" ChromeType="None" ExportMode="All" __MarkupType="vsattributemarkup"
__WebPartId="{C30D3C9F-ECB9-4334-B442-5244C9837488}" __AllowXSLTEditing="true" WebPart="true" Height="" Width="" >
<DataSources>
<SharePoint:SPDataSource ID="Project_DataSource" runat="server" DataSourceMode="ListItem"
SelectCommand = "<View><Query><Where><And><Eq><FieldRef Name="ContentType"/><Value Type="Text">Item</Value></Eq><Eq><FieldRef Name="ID"/><Value Type="Number">{ListItemId}</Value></Eq></And></Where></Query></View>"
UseInternalName="True" UseServerDataFormat="True">
<SelectParameters>
<WebPartPages:DataFormParameter ParameterKey="ListItemId" PropertyName="ParameterValues" DefaultValue="0" Name="ListItemId"></WebPartPages:DataFormParameter>
<WebPartPages:DataFormParameter ParameterKey="weburl" PropertyName="ParameterValues" DefaultValue="http://jam3iya4" Name="weburl"></WebPartPages:DataFormParameter>
<WebPartPages:DataFormParameter ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{5A1F5F46-E308-440D-A7CE-3FF0587D9B4B}" Name="ListID"></WebPartPages:DataFormParameter>
</SelectParameters>
<UpdateParameters>
<WebPartPages:DataFormParameter ParameterKey="ListItemId" PropertyName="ParameterValues" DefaultValue="0" Name="ListItemId"></WebPartPages:DataFormParameter>
<WebPartPages:DataFormParameter ParameterKey="weburl" PropertyName="ParameterValues" DefaultValue="http://jam3iya4" Name="weburl"></WebPartPages:DataFormParameter>
<WebPartPages:DataFormParameter ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{5A1F5F46-E308-440D-A7CE-3FF0587D9B4B}" Name="ListID"></WebPartPages:DataFormParameter>
</UpdateParameters>
</SharePoint:SPDataSource>
</DataSources>
<Xsl>
<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:output method="html" indent="no"/>
<xsl:decimal-format NaN=""/>
<xsl:param name="ListItemId"></xsl:param>
<xsl:param name="dvt_apos">'</xsl:param>
<xsl:param name="ManualRefresh"></xsl:param>
<xsl:variable name="dvt_1_automode">0</xsl:variable>
<xsl:template match="/" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls">
<xsl:choose>
<xsl:when test="($ManualRefresh = 'True')">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<xsl:call-template name="dvt_1"/>
</td>
<td width="1%" class="ms-vb" valign="top">
<img src="/_layouts/15/images/staticrefresh.gif" id="ManualRefresh" border="0" onclick="javascript: {ddwrt:GenFireServerEvent('__cancel')}" alt="Click here to refresh the dataview."/>
</td>
</tr>
</table>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="dvt_1"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="dvt_1">
<xsl:variable name="dvt_StyleName">ListForm</xsl:variable>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[@ID=$ListItemId]"/>
<div>
<span id="part1">
<table cellpadding="4" cellspacing="0" border="0">
<caption style="color:red;">{{<xsl:value-of select="$ListItemId"/>}}</caption>
<tr>
<td class="ms-vh">
<table border="0" width="100%">
<xsl:call-template name="dvt_1.body">
<xsl:with-param name="Rows" select="$Rows"/>
</xsl:call-template>
</table>
</td>
</tr>
</table>
</span>
<SharePoint:AttachmentUpload runat="server" ControlMode="Edit"/>
<SharePoint:ItemHiddenVersion runat="server" ControlMode="Edit"/>
</div>
</xsl:template>
<xsl:template name="dvt_1.body">
<xsl:param name="Rows"/>
<tr>
<td class="ms-toolbar" nowrap="nowrap">
<table>
<tr>
<td width="99%" class="ms-toolbar" nowrap="nowrap"><IMG SRC="/_layouts/15/images/blank.gif" width="1" height="18"/></td>
<td class="ms-toolbar" nowrap="nowrap">
<SharePoint:SaveButton runat="server" ControlMode="Edit" id="savebutton1"/>
<input type="button" value=" Ok " name="btnTopSave" onclick="javascript:{ddwrt:GenFireServerEvent('__commit')}" style="height:22px"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="ms-toolbar" nowrap="nowrap">
<SharePoint:ItemValidationFailedMessage runat="server" ControlMode="Edit"/>
</td>
</tr>
<xsl:for-each select="$Rows">
<xsl:call-template name="dvt_1.rowedit"/>
</xsl:for-each>
<tr>
<td class="ms-toolbar" nowrap="nowrap">
<table>
<tr>
<td class="ms-descriptiontext" nowrap="nowrap">
<SharePoint:CreatedModifiedInfo ControlMode="Edit" runat="server"/>
</td>
<td width="99%" class="ms-toolbar" nowrap="nowrap"><IMG SRC="/_layouts/15/images/blank.gif" width="1" height="18"/></td>
<td class="ms-toolbar" nowrap="nowrap">
<SharePoint:SaveButton runat="server" ControlMode="Edit" id="savebutton2"/>
</td>
</tr>
</table>
</td>
</tr>
</xsl:template>
<xsl:template name="dvt_1.rowedit">
<xsl:param name="Pos" select="position()"/>
<tr>
<td>
<xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">
<span ddwrt:amkeyfield="ID" ddwrt:amkeyvalue="ddwrt:EscapeDelims(string(@ID))" ddwrt:ammode="view"></span>
</xsl:if>
<table cellpadding="4" cellspacing="0" border="0">
<tr>
<th class="ms-vh SmallHeader">Created</th>
<th class="ms-vh SmallHeader">Quote</th>
<th class="ms-vh SmallHeader">RFQ Manager</th>
<th class="ms-vh SmallHeader">Assigned To</th>
<th class="ms-vh SmallHeader">Value</th>
<th class="ms-vh SmallHeader">Status</th>
</tr>
<tr valign="middle">
<td class="ms-vb2"><SharePoint:FormField runat="server" id="fff2{$Pos}" ControlMode="Display" FieldName="Created" __designer:bind="{ddwrt:DataBind('u',concat('fff2',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Created')}"/></td>
<td class="ms-vb2" id="QNContrainer"><SharePoint:FormField runat="server" id="fff10{$Pos}" ControlMode="Display" FieldName="Quote_x0020__x0023_" __designer:bind="{ddwrt:DataBind('u',concat('fff10',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Quote_x0020__x0023_')}"/></td>
<td class="ms-vb-user"><SharePoint:FormField runat="server" id="fff5{$Pos}" ControlMode="Display" FieldName="Account_x0020_Manager" __designer:bind="{ddwrt:DataBind('u',concat('fff5',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Account_x0020_Manager')}"/></td>
<td class="ms-vb-user"><SharePoint:FormField runat="server" id="fff7{$Pos}" ControlMode="Display" FieldName="Assigned_x0020_To" __designer:bind="{ddwrt:DataBind('u',concat('fff7',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Assigned_x0020_To')}"/></td>
<td class="ms-vb2" style="color:#F15854;"><SharePoint:FormField runat="server" id="fff12{$Pos}" ControlMode="Display" FieldName="Quote_x0020_Value" __designer:bind="{ddwrt:DataBind('u',concat('fff12',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Quote_x0020_Value')}"/></td>
<td class="ms-vb2"><SharePoint:FormField runat="server" id="fff14{$Pos}" ControlMode="Display" FieldName="Status" __designer:bind="{ddwrt:DataBind('u',concat('fff14',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Status')}"/></td>
</tr>
<tr>
<td colspan="6">
<div id="Tabs">
<ul>
<li id="RFQTab">
<a href="#RFQ">
<span>RFQ</span>
</a>
</li>
</ul>
<div id="RFQ">
<table border="0" cellspacing="0" cellpadding="4" width="100%">
<tr>
<td colspan="2" class="ms-formlabel">
<H3 class="ms-standardheader">
<nobr>
Project Name<span class="ms-formvalidation"> *</span>
</nobr>
</H3>
</td>
</tr>
<tr>
<td colspan="2" class="ms-formbody longField">
<span style="color:red;">{{<xsl:value-of select="@ID"/>}}</span>
<SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="Edit" FieldName="Title" __designer:bind="{ddwrt:DataBind('u',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}"/>
<SharePoint:FieldDescription runat="server" id="ff1description{$Pos}" FieldName="Title" ControlMode="Edit"/>
</td>
</tr>
[这里有许多行具有相同语法的字段,为清楚起见已删除]
</table>
</div>
</div>
</td>
</tr>
</table>
<br/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
</Xsl>
<DataFields>@Title,Project Name;@Product,Product;@Customer,Customer;@Account_x0020_Manager,Account Manager;@emailOptions,emailOptions;@Assigned_x0020_To,Assigned To;@Lead,Lead;@Quickship,Quickship;@Status,Status;@Notes,Notes;@ID,ID;@ContentType,Content Type;@Modified,Modified;@Created,Created;@Author,Created By;@Editor,Modified By;@_UIVersionString,Version;@Attachments,Attachments;@ItemChildCount,Item Child Count;@FolderChildCount,Folder Child Count;</DataFields>
<ParameterBindings>
<ParameterBinding Name="ListItemId" Location="QueryString(SPID)" DefaultValue="0"/>
<ParameterBinding Name="weburl" Location="None" DefaultValue="http://jam3iya4"/>
<ParameterBinding Name="ListID" Location="None" DefaultValue="{5A1F5F46-E308-440D-A7CE-3FF0587D9B4B}"/>
<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>
</WebPartPages:DataFormWebPart>