0

У меня возникла проблема в приложении ASP .NET 2.0.Проблемы с оптимистичным параллелизмом через ObjectDataSource и GridView

У меня есть GridView отображение данных из ObjectDataSource (подключено к классу BLL, который подключается к TabledAdapter (типизированный Dataset с помощью оптимистического параллелизма).

Выбора: (для отображения данных) работает просто отлично, однако, когда Я обновляю подряд GridView делает пройти старые значения в 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 

И это часть страницы:.

<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

У меня была такая же проблема. я пытался получить оптимистический параллелизм работать так я начал с удаления на стол с 2 колонками

, но в соответствии с локальным окном, казалось, что DataGrid проходят нулевые
для других, чем значений основной ключ.

любом случае после настройки и чтения здесь и там, это было решение моих проблем:

на ObjectDataSource я модифицирована 1 свойство: ConflictDetection = "CompareAllValues"

глупый меня ..

+0

У меня есть CompareAllValues ​​set, это странная часть, она просто игнорирует ее. –

Смежные вопросы