0

ASP .NET 2.0 응용 프로그램에 문제가 있습니다. ObjectDataSource 및 GridView를 통한 낙관적 동시성 문제

나는의 GridView는 (형식화 된 데이터 집합)이 낙관적 동시성을 사용하여 (A TabledAdapter에 연결하는 BLL 클래스에 연결된 ObjectDataSource를 데이터를 표시합니다.

셀렉트 (단,) 잘 데이터를 작품 표시 할 때 . 나는

<DataObjectMethod(DataObjectMethodType.Update, True)> _ 
    Public Function UpdateOC(ByVal original_id As Integer, ByVal original_fotonummer As Integer, ByVal original_inhoud As String, ByVal original_postdatum As Date?, ByVal fotonummer As Integer, ByVal inhoud As String, ByVal postdatum As Date?) As Boolean 
     Dim tweets As TwitpicOC.TweetsDataTable = adapterOC.GetTweetById(original_id) 
     If tweets.Rows.Count = 0 Then Return False 
     Dim row As TwitpicOC.TweetsRow = tweets(0) 

     SmijtHetErIn(row, original_fotonummer, original_inhoud, original_postdatum) 
     row.AcceptChanges() 

     SmijtHetErIn(row, fotonummer, inhoud, postdatum) 

     Return adapterOC.Update(row) = 1 
    End Function 

    Public Sub SmijtHetErIn(ByVal row As TwitpicOC.TweetsRow, ByVal original_fotonummer As Integer, ByVal original_inhoud As String, ByVal original_postdatum As Date?) 
     With row 
      .fotonummer = original_fotonummer 
      If String.IsNullOrEmpty(original_inhoud) Then .SetinhoudNull() Else .inhoud = original_inhoud 
      If Not original_postdatum.HasValue Then .SetpostdatumNull() Else .postdatum = original_postdatum.Value 
     End With 
    End Sub 

을의 GridView의 ObjectDataSource를에 이전 값을 전달 않는 행을 업데이트하고이 페이지의 일부입니다

<div id='Overzicht' class='post'> 
    <div class='title'> 
     <h2> 
      <a href='javascript:;'>Tweetsoverzicht</a></h2> 
     <p> 
      Overzicht</p> 
    </div> 
    <div class='entry'> 
     <p> 
      <asp:ObjectDataSource ID="odsGebruiker" runat="server" OldValuesParameterFormatString="" 
       SelectMethod="GetAll" TypeName="TakeHomeWeb.BLL.GebruikersBLL"></asp:ObjectDataSource> 
      <asp:ObjectDataSource ID="odsFoto" runat="server" SelectMethod="GetFotosByGebruiker" 
       TypeName="TakeHomeWeb.BLL.FotosBLL"> 
       <SelectParameters> 
        <asp:ControlParameter ControlID="ddlGebruiker" DefaultValue="0" Name="userid" PropertyName="SelectedValue" 
         Type="Int32" /> 
       </SelectParameters> 
      </asp:ObjectDataSource> 
      <form id="form1" runat="server"> 
      <asp:Label runat="server" AssociatedControlID="ddlGebruiker">Gebruiker:&nbsp;</asp:Label> 
      <asp:DropDownList ID="ddlGebruiker" runat="server" AutoPostBack="True" DataSourceID="odsGebruiker" 
       DataTextField="naam" DataValueField="userid" AppendDataBoundItems="True"> 
       <asp:ListItem Text="Kies een gebruiker" Value="-1" /> 
      </asp:DropDownList> 
      <br /> 
      <asp:Label runat="server" AssociatedControlID="ddlFoto">Foto:&nbsp;</asp:Label> 
      <asp:DropDownList ID="ddlFoto" runat="server" AutoPostBack="True" DataSourceID="odsFoto" 
       DataTextField="url" DataValueField="id" AppendDataBoundItems="True"> 
       <asp:ListItem Value="-1">Kies een foto...</asp:ListItem> 
      </asp:DropDownList> 
      <br /> 
      <div style="float: left"> 
       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id" 
        DataSourceID="odsTweets"> 
        <Columns> 
         <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> 
         <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True" 
          SortExpression="id" /> 
         <asp:BoundField DataField="fotonummer" HeaderText="fotonummer" SortExpression="fotonummer" /> 
         <asp:BoundField DataField="inhoud" HeaderText="inhoud" SortExpression="inhoud" /> 
         <asp:BoundField DataField="postdatum" HeaderText="postdatum" SortExpression="postdatum" /> 
        </Columns> 
       </asp:GridView> 
       <asp:ObjectDataSource ID="odsTweets" runat="server" ConflictDetection="CompareAllValues" 
        DeleteMethod="DeleteOC" OldValuesParameterFormatString="original_{0}" SelectMethod="GetTweetsByFotoId" 
        TypeName="TakeHomeWeb.BLL.TweetsOCBLL" UpdateMethod="UpdateOC"> 
        <DeleteParameters> 
         <asp:Parameter Name="original_id" Type="Int32" /> 
         <asp:Parameter Name="original_fotonummer" Type="Int32" /> 
         <asp:Parameter Name="original_inhoud" Type="String" /> 
         <asp:Parameter Name="original_postdatum" Type="DateTime" /> 
        </DeleteParameters> 
        <UpdateParameters> 
         <asp:Parameter Name="original_id" Type="Int32" /> 
         <asp:Parameter Name="original_fotonummer" Type="Int32" /> 
         <asp:Parameter Name="original_inhoud" Type="String" /> 
         <asp:Parameter Name="original_postdatum" Type="DateTime" /> 
         <asp:Parameter Name="fotonummer" Type="Int32" /> 
         <asp:Parameter Name="inhoud" Type="String" /> 
         <asp:Parameter Name="postdatum" Type="DateTime" /> 
        </UpdateParameters> 
        <SelectParameters> 
         <asp:ControlParameter ControlID="ddlFoto" Name="foto" PropertyName="SelectedValue" 
          Type="Int32" /> 
        </SelectParameters> 
       </asp:ObjectDataSource> 
      </div> 
      </form> 
     </p> 
    </div> 
</div> 

거대한 실패가 있거나 뭔가가 있다는 느낌을 받았지만 지금은 몇 시간 꼼짝 않고 꼼짝 못하게했습니다. 나는 그것을 찾을 수 없습니다.

답변

0

나는 똑같은 문제가있었습니다. 내가 을 작업 낙관적 동시성을 얻으려고 노력했다 그래서 그것이 아닌 다른 값을
널 (null) 를 통과하는 데이터 그리드처럼 보였다 , 2 열

하지만 로컬 창에 따라 함께 테이블에 삭제에서 시작 기본 키. ConflictDetection = "CompareAllValues"

바보 나 ..

+0

: 내가 한 속성을 수정 ObjectDataSource를에

:

어쨌든 조정하고 여기 저기 읽은 후, 이 내 문제의 해결책이었다 CompareAllValues가 설정되어 있습니다. 이상한 부분입니다. 무시하는 것 같습니다. –