none
Некорректное удаление записи из DataForm Silverlight 4 RRS feed

  • Вопрос

  • Здравствуйте!

    Столкнулся с проблемой удаления записи в DataForm, которая связан DataGrid.

     

    <sdk:DataGrid AutoGenerateColumns="False" Grid.Row="1" ItemsSource="{Binding ElementName=aspnet_RolesDomainDataSource, Path=Data}" Name="aspnet_RolesDataGrid" RowDetailsVisibilityMode="VisibleWhenSelected" Grid.RowSpan="3">
           <sdk:DataGrid.Columns>
            <sdk:DataGridTextColumn x:Name="roleNameColumn" Binding="{Binding Path=RoleName}" Header="Имя группы" Width="SizeToHeader" />
            <sdk:DataGridTextColumn x:Name="descriptionColumn" Binding="{Binding Path=Description}" Header="Описание группы" Width="SizeToHeader" />
           </sdk:DataGrid.Columns>
          </sdk:DataGrid>
          <sdk:DataPager Grid.Row="4" Height="26" HorizontalAlignment="Left" Name="dataPager2" PageSize="10" VerticalAlignment="Top" Width="306" />
          <toolkit:DataForm Grid.Column="2" Grid.Row="1" Name="dataForm_roles" CommandButtonsVisibility="Add,Delete,Edit,Commit,Cancel"
               CurrentItem="{Binding ElementName=aspnet_RolesDataGrid, Path=SelectedItem, Mode=TwoWay}" 
               ItemsSource="{Binding ElementName=aspnet_RolesDomainDataSource, Path=Data}" 
               AutoEdit="False" 
               AutoCommit="False" 
               CommitButtonContent="Сохранить" 
               CancelButtonContent="Отмена" EditEnding="dataForm_roles_EditEnding" DeletingItem="dataForm_roles_DeletingItem" ContentLoaded="dataForm_roles_ContentLoaded">
           <toolkit:DataForm.EditTemplate>
            <DataTemplate>
             <StackPanel Orientation="Vertical">
              <toolkit:DataField Label="Имя группы">
               <TextBox x:Name="RoleName" Text="{Binding RoleName, Mode=TwoWay}"></TextBox>
              </toolkit:DataField>
              <TextBox x:Name="LoweredRoleName" Text="{Binding LoweredRoleName, Mode=TwoWay}" Visibility="Collapsed"></TextBox>
              <toolkit:DataField Label="Описание группы">
               <TextBox x:Name="Description" Text="{Binding Description, Mode=TwoWay}"></TextBox>
              </toolkit:DataField>
              <toolkit:DataField Label="АРМ">
               <ComboBox x:Name="ARMSComboBox" SelectedValue="{Binding ArmId, Mode=TwoWay}" DisplayMemberPath="name" SelectedValuePath="id" Loaded="ComboArm_Loaded"></ComboBox>   
              </toolkit:DataField>
              <toolkit:DataField Label="Офис">
               <ComboBox x:Name="OfficeComboBox" SelectedValue="{Binding OfficeId, Mode=TwoWay}" DisplayMemberPath="name" SelectedValuePath="id" Loaded="ComboOffice_Loaded"></ComboBox>
              </toolkit:DataField>
             </StackPanel>
            </DataTemplate>
           </toolkit:DataForm.EditTemplate>
          </toolkit:DataForm>
    

    Дело в том что при удалении текущего элемента, в DataGrid-e удаляются сразу два элемента текущий и нижеследующий, хотя в самой БД удаляется только тот элемент, который мы выбрали (текущий).

    Ниже представлена сама функция удаления записи:

     

    private void dataForm_roles_DeletingItem(object sender, CancelEventArgs e)
      {
       var ctx = aspnet_RolesDomainDataSource.DomainContext as Web.Services.DomainServiceUsersData;
       DataForm form = sender as DataForm;
       form.CommitEdit();
       Web.aspnet_Roles ev = form.CurrentItem as Web.aspnet_Roles;
       ctx.aspnet_Roles.Remove(ev);
       ctx.SubmitChanges((op) =>
       {
        if (op.HasError)
        {
         MessageBox.Show(op.Error.Message);
        }
       }, null);
      }
    

     

    Пожалуйста помогите разобраться в данной проблеме.

    Заранее спасибо!


    6 августа 2011 г. 23:46

Ответы

Все ответы

  • Здравствуйте.

    Посмотрите, пожалуйста, решение по следующей ссылке - Re: Sometime Can't Delete Record, решение заключается в добавлении e.Cancel = true; перед удалением записи ctx.aspnet_Roles.Remove(ev); .


    Для связи [mail]
    • Предложено в качестве ответа Abolmasov Dmitry 8 августа 2011 г. 22:54
    • Помечено в качестве ответа Abolmasov Dmitry 9 августа 2011 г. 11:14
    8 августа 2011 г. 12:12
  • Спасибо большое!!! Это реально сработало. Толко вот почему так? Неужели это недоработка сильверлайта 4-го?


    Мой секрет успеха заключается в умении понять точку зрения другого человека и смотреть на вещи и с его и со своей точек зрения.
    8 августа 2011 г. 16:13
  • Скорей баг контрола DataForm.

    Не забывайте отмечать ответы, решившие проблему (кнопка "Пометить как ответ"). Спасибо.


    Для связи [mail]
    8 августа 2011 г. 22:54