私はこの解決策を4日間探していました-スタックオーバーフローを助けてください..あなたが私の唯一の希望です。
FormView を使用して、大きなテーブルの行を編集できるようにしています。FormView の DataSource は、DataSourceId 属性を使用して指定されます。
SqlDataSource には、OldValuesParameterFormatString が指定されており、ConflictDetection が "CompareAllValues" として設定されています。
私の問題は、OldValues が FormView によって設定されていないため、Update コマンド中に CompareAllValues が発生しないことです。
私はインターネットを精査し、提案に出くわしましたが、どれも問題を解決していません. OldValues が設定されていない理由を誰かが知っていることを願っています。
(簡略化された)コードは次のとおりです。
<asp:FormView ID="FormViewPlanAgain" runat="server" DataSourceID="SqlPlanSourceAgain" DataKeyNames="PlansRID">
<ItemTemplate>
<%# Eval("PlanName") %>
</ItemTemplate>
<EditItemTemplate>
<dx:ASPxTextBox id="ASPxTextBox36" runat="server" CssClass="floatLeft veryLarge" Text='<%# Bind("PlanName") %>' />
<asp:Button ID="btnUpdate" runat="Server" CommandName="Update" Text="Update" />
<asp:Button ID="btnCancel" runat="Server" CommandName="Cancel" Text="Cancel" />
</EditItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlPlanSourceAgain" runat="server" OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:cpaConnectionString %>"
SelectCommand="Select * FROM Plans WHERE Plans.PlansRID = @PlansRID" SelectCommandType="Text"
UpdateCommand="Plans_Update" UpdateCommandType="StoredProcedure" OnSelecting="SqlPlanSource_Selecting">
<SelectParameters>
<asp:Parameter DefaultValue="0" Name="PlansRID" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="GroupsRID" Type="Int32" />
<asp:Parameter Name="ProductCodeRID" Type="Int32" />
<asp:Parameter Name="ProductRID" Type="Int32" />
<asp:Parameter Name="PoolRID" Type="Int32" />
<asp:Parameter Name="PlanName" Type="String" />
<asp:Parameter Name="PlanID" Type="Int32" />
<asp:Parameter Name="ProductID" Type="Int32" />
<asp:Parameter Name="AdminPercent" Type="String" />
<asp:Parameter Name="ArizonaEmployees" Type="String" />
<asp:Parameter Name="BenefitChanges" Type="Int32" />
<asp:Parameter Name="EmployeesAfterWaivers" Type="String" />
<asp:Parameter Name="ParticipationPercent" Type="String" />
<asp:Parameter Name="TheoreticalPremium" Type="String" />
<asp:Parameter Name="CCBrokerOnCorrespondence" Type="String" />
<asp:Parameter Name="ClaimSystemPlanNameRider" Type="String" />
<asp:Parameter Name="COBRAAdminEntityRID" Type="Int32" />
<asp:Parameter Name="Commission" Type="String" />
<asp:Parameter Name="CoveragePastRetirement" Type="String" />
<asp:Parameter Name="DependentAgeLimit" Type="String" />
<asp:Parameter Name="DomesticPartnerCoverage" Type="String" />
<asp:Parameter Name="EligibleEmployeeCount" Type="String" />
<asp:Parameter Name="EmployerGroupContribution" Type="String" />
<asp:Parameter Name="EnrollmentCount" Type="String" />
<asp:Parameter Name="ERISA" Type="String" />
<asp:Parameter Name="ExternalID" Type="Int32" />
<asp:Parameter Name="ExternalCarrierEntityRID" Type="Int32" />
<asp:Parameter Name="FundingTypeRID" Type="Int32" />
<asp:Parameter Name="GenerateRenewal" Type="String" />
<asp:Parameter Name="HandbookTypeRID" Type="Int32" />
<asp:Parameter Name="HandbookDistributionRID" Type="Int32" />
<asp:Parameter Name="InternalCOB" Type="String" />
<asp:Parameter Name="LegalGuardianship" Type="String" />
<asp:Parameter Name="NewHireWaitingPeriod" Type="String" />
<asp:Parameter Name="OnlineEnrollment" Type="String" />
<asp:Parameter Name="ParticipationRequirement" Type="String" />
<asp:Parameter Name="RiskPercent" Type="String" />
<asp:Parameter Name="RiskTier" Type="String" />
<asp:Parameter Name="SASDivisionRID" Type="String" />
<asp:Parameter Name="SASPlanRID" Type="String" />
<asp:Parameter Name="ContractLengthRID" Type="String" />
<asp:Parameter Name="StepChildrenCoverageTypeRID" Type="String" />
<asp:Parameter Name="TargetLossRatio" Type="String" />
<asp:Parameter Name="UnderwritingCompanyRID" Type="String" />
<asp:Parameter Name="VoluntaryContributoryTypeRID" Type="String" />
<asp:Parameter Name="EditorUsersRID" Type="String" />
<asp:Parameter Name="EffectiveStartDate" Type="String" />
<asp:Parameter Name="EffectiveEndDate" Type="String" />
<asp:Parameter Name="Stamp" Type="String" />
<asp:Parameter Name="SequenceNumber" Type="String" />
<asp:Parameter Name="ActiveFlag" Type="String" />
<asp:Parameter Name="Note" Type="String" />
<asp:Parameter Name="HistoryNotes" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
わかりやすくするために、ItemTemplate と EditItemTemplate の他のすべてのフィールドを切り取って、頭を悩ませないようにしています。それらを SqlDataSource に残したので、私が遊んでいるフィールドがかなりあることがわかります。
私の知る限り、すべてを正しく設定し、念のためにすべてを最初からやり直しました。心に留めているヒントはありますか?お時間をいただきありがとうございました。