powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Добавление новых строк в таблицу
25 сообщений из 215, страница 2 из 9
Добавление новых строк в таблицу
    #37273974
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Добавил в Styles одну строчку
Код: plaintext
1.
<appWeb:myContext x:Key="DomainContext"/>
и все заработало
без
Код: plaintext
1.
2.
3.
4.
 protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        this.dfAddRecord.CurrentItem = this.newRecord;
        }
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    private void SubmitCompleted(System.ServiceModel.DomainServices.Client.SubmitOperation obj)
        {
            this.biLoading.IsBusy = false;
            if (obj.HasError)
            {
                obj.MarkErrorAsHandled();
                MessageBox.Show(obj.Error.Message);
            }
            else
            {
                MessageBox.Show("obj.Error.Message");
                this.NavigationService.ShowPrevPage();
            }
        }
Сейчас разбираюсь с ними для чего они нужны, так сказать
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37274484
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я опять за помощью.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   private void OnAddClosed(object sender, EventArgs e) // Форма добавления записи
        {
            Child_add add = (Child_add)sender;
            bool? result = add.DialogResult;
            if (result.HasValue && result.Value)
            {
                this.newRecord = new z_plan_name()
                { // Значения полей
                  id= 3 , // Должен увеличиваться автоматически
                    kod_speciality = add.Kod_Box.Text,
                    name = add.Name_Box.Text,
                    delete = "d"
                };
                Add_z();
            }
        }
Когда удаляю поле id из описания он всегда становится "0" т.к. id с таким номером уже присутствует то запись не добавляется
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    private void Add_z()
       {
            if (ResourceWrapper.CurrentDomainContext == null)
            {
                return;
            }
            {
                ResourceWrapper.CurrentDomainContext.z_plan_names.Add(this.newRecord);
                ResourceWrapper.CurrentDomainContext.SubmitChanges(SubmitCompleted, null);
            }
        }
Как обойти эту ошибку? В примере ID увеличивается вместе с добавлением новой записи. Спасибо.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37274491
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

так вы с ChildWindow работаете не правильно.
подпишитесь на событие закрытия диалога, потом решайте, добавлять запись или нет.

п.с. id записи увеличивается на стороне сервера, т.к. в БД у поля стоит автоприращение, никакой магии на стороне клиента.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37274499
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

оп, извиняюсь, просмотрел, что описанное мной выше уже делается :)

в общем, если ваше поле id в БД помечено как identity (автоприращение), то руками его трогать не рекомендую, оно будет работать самостоятельно.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37274769
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, действительно на сервере в таблице свойство "Удостоверение", было в False.
За что же отвечает код
Код: plaintext
1.
if (this.dfAddRecord.CommitEdit())
и
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
       private void SubmitCompleted(System.ServiceModel.DomainServices.Client.SubmitOperation obj)
        {
            this.biLoading.IsBusy = false;
            if (obj.HasError)
            {
                obj.MarkErrorAsHandled();
                MessageBox.Show(obj.Error.Message);
            }
            else
            {
               this.NavigationService.ShowPrevPage();
            }
        }

        private void btnCancelSaveRecord_Click(object sender, RoutedEventArgs e)
        {
            this.NavigationService.ShowPrevPage();
        }
если без него все вроде как работает. И еще как обновить данные в самом гриде.
Еще раз огромное спасибо просто Вы мне все спокойно объяснили. Буду грызть дальше
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37275021
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

dfAddRecord - это DataForm, который предназначен для создания/редактирования/удаления записей.

делая так:
авторthis.dfAddRecord.CommitEdit()
мы вносим свои изменения в Оригинальную запись, т.к. работа происходит с копией.

рекомендую почитать про DataForm - ссылки есть в гугле.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276178
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую DevExpressov'ский компонент
Код: plaintext
1.
2.
3.
4.
5.
<dxg:GridControl Name="gridControl_Plan" AutoPopulateColumns="False" 
                         DataSource="{Binding ElementName=z_plan_nameDomainDataSource, Path=Data}" 
                         ShowBorder="False" Height="352" VerticalAlignment="Bottom" 
                         Grid.ColumnSpan="2" FilterString="name"  
                         >
Control_Plan.Add(menuInfo.Row.RowHandle.Value);
Добавляет в GridControl визуально. Что каждый раз обращаться к серверу и обновлять "грид"
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276313
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжение предыдущего поста... В общем есть способ обновить записи в GridControl после добавления в таблицу на MSSQLServere к которой и привязан этот GridControl через DomainDataSource.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276463
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

если вы добавили запись на клиенте (Silverlight приложение) это еще не значит, что она волшебным образом появится на сервере, ее нужно отправить.

в общем мантра такова:
на любое действие добавление/редактирование/удаление нужно сделать SubmitChanges()
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276657
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы меня не поняли. С Вашей помощью я научился добавлять новые записи в таблицу на SQLServer'e
КОД
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
   private void AddItem_ItemClick(object sender, ItemClickEventArgs e)
        {
            Child_add add = new Child_add();
            add.Closed += new EventHandler(OnAddClosed);
            add.Show();

        }

        private void OnAddClosed(object sender, EventArgs e)
        {
            Child_add add = (Child_add)sender;
            bool? result = add.DialogResult;
            if (result.HasValue && result.Value)
            {
                this.newRecord = new z_plan_name()
                {
                    kod_speciality = add.Kod_Box.Text,
                    name = add.Name_Box.Text,
                    delete = "d"
                };
                Add_z();
            }
        }

        private void Add_z()
        {
            if (ResourceWrapper.CurrentDomainContext == null)
            {
                return;
            }
            {
                ResourceWrapper.CurrentDomainContext.z_plan_names.Add(this.newRecord);
                ResourceWrapper.CurrentDomainContext.SubmitChanges(SubmitCompleted, null);
            }
        }
После выполнения этого кода запись благополучно добавлена в таблицу на "серваке", но в GridControl'e не появляется (GridControl находится на Child форме) если ее повторно открыть то записи обновятся т.е. повторно загрузятся с "сервера". Если в место
Код: plaintext
1.
                ResourceWrapper.CurrentDomainContext.z_plan_names.Add(this.newRecord);
использовать
Код: plaintext
1.
z_plan_nameDomainDataSource.DataView.Add(this.newRecord);
запись появляется в "гриде" но не на "сервере". Есть ли возмозность после добавления записи на "сервер" обновить GridControl? Спасибо.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276680
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос, наверное снят если только я не сделал все очень "криво". Запись добавляется если после выполнения
Код: plaintext
Add_z();
добавить
Код: plaintext
1.
 z_plan_nameDomainDataSource.DataView.Add(this.newRecord);
Осталось разобраться с редактированием записей. И попутно еще вопрос. Удалив с сервера записи в таблицы. После добавления новых ID продолжает прибавлять значения начиная с последнего значения до удаления записей.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276709
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

вопрос в чем ?
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276737
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уТКаChek_Fedor,

вопрос в чем ?
Почему после удаления записей в таблице на SQLServer'e, данные из которой загружаются в GridControl. Поле ID при добавлении новых строк из программы продолжает "расти", а не сбрасывается в ноль
т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ID
 1 
 2 
 3 
 4 
 5 
 6 
после удаления
Код: plaintext
1.
2.
3.
ID
 1 
 2 
добавляем записи
Код: plaintext
1.
2.
3.
4.
5.
6.
ID
 1 
 2 
 7 
 8 
....
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276788
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поспешил я с выводами при добавлении записи
Код: plaintext
1.
2.
3.
4.
5.
.................
};
   Add_z();
 z_plan_nameDomainDataSource.DataView.Add(this.newRecord);
}
Ругается на
Код: plaintext
1.
2.
  
 z_plan_nameDomainDataSource.DataView.Add(this.newRecord);
"Заданное приведение является недопустимым." Вывод: обновлять так нельзя или...
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276835
Руки-крюки
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorуТКаChek_Fedor,

вопрос в чем ?
Почему после удаления записей в таблице на SQLServer'e, данные из которой загружаются в GridControl. Поле ID при добавлении новых строк из программы продолжает "расти", а не сбрасывается в ноль

Это нормально, не обращайте внимание.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276851
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

оу, я думал у вас есть запас опыта, чтобы понять это.

отвечая на вопрос: да, это нормальное поведение БД, так устроено и это просто нужно принять.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276863
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorПоспешил я с выводами при добавлении записи
Код: plaintext
1.
2.
3.
4.
5.
.................
};
   Add_z();
 z_plan_nameDomainDataSource.DataView.Add(this.newRecord);
}
Ругается на
Код: plaintext
1.
2.
  
 z_plan_nameDomainDataSource.DataView.Add(this.newRecord);
"Заданное приведение является недопустимым." Вывод: обновлять так нельзя или...
вот вы себе придумали проблему, взяли DevExpress...
со стандартным такого поведения не наблюдал, да и сам грид у DevExpress какой-то мягко говоря не айс.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37276885
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, не занимать мне наглости...
В примере редактирование происходит
Код: plaintext
1.
2.
3.
4.
   private void btnSaveRecord_Click(object sender, RoutedEventArgs e)
        {
            this.ddsCustomer.SubmitChangesAndGoBack(this.NavigationService);
        }
Но при добавлении "this.NavigationService" в свой проект ругается, что "возможно пропущена ссылка на сборку". Как отредактировать выделенную запись я пробовал так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    private void EditRowItem_ItemClick(object sender, ItemClickEventArgs e)
        {
            GridCellMenuInfo menuInfo = Control_Plan.GridMenu.MenuInfo as GridCellMenuInfo;
            if (menuInfo != null && menuInfo.Row != null)
            name_edit = (String)gridControl_Plan.GetFocusedRowCellValue("name");
            kod_speciality_edit = (String)gridControl_Plan.GetFocusedRowCellValue("name");
            kod_speciality_edit = (String)gridControl_Plan.GetFocusedRowCellValue("kod_speciality");
            Child_add add = new Child_add();
            add.Closed += new EventHandler(OnAddClosed);
            add.Kod_Box.Text = kod_speciality_edit;
            add.Name_Box.Text = name_edit;
            add.Show();
        }
но четно...
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37277055
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уговорили отказываюсь от DevExpresov'ского Grida :(
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37277329
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

1) вы делаете себе жизнь труднее не используя DataForm;
2) это
Код: plaintext
this.ddsCustomer.SubmitChangesAndGoBack();
мой небольшой фреймворк дабы облегчить работу с данными, лежит в папке libs Silverlight приложения, а хостится тут
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37277395
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придется слишком много переделывать. Выпадающие менюшки и т.д., Ну чтож рас начал надо продолжать.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37277664
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После просмотра части инетовских ссылок посвященных DataForm сложилось впечатление, что мне ни чего не мешает поместить его на чилбд форму придать нужный мне вид и попытаться привязать к своему GridControl'у. Ну если не получится то придется использовать DataGrid.
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37279051
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, экспериментирую тут. Создал ChildWindow в предложенном Вами проекте "SLCBDDSApp" урезал до "не могу" код Add.xaml вставил его в "новоиспеченную" Child форму в результате чего при вызове ее отображаются только кнопки "Save_Add" и "Cancel" но не
Код: plaintext
1.
2.
3.
<toolkit:DataField Label="Last name">
    <TextBox Text="1111111"/>
</toolkit:DataField>
хотя при вызове Add.xaml все что прописано то и отображается.
Вот код xaml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<controls:ChildWindow xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/toolkit"  x:Class="SLCBDDSApp.ChildWindow1"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
           Width="400" Height="300" 
           Title="ChildWindow1">
    <Grid x:Name="LayoutRoot" Margin="2">
        <toolkit:DockPanel>
            <toolkit:DockPanel HorizontalAlignment="Right" toolkit:DockPanel.Dock="Top">
                <Button x:Name="btnSaveRecord" Style="{StaticResource ButtonSaveRecordStyle}"  Content="Save_Add" />
                <Button x:Name="btnCancelSaveRecord" Style="{StaticResource ButtonCancelRecordStyle}" />
            </toolkit:DockPanel>

                <toolkit:DataForm x:Name="dfAddRecord" >
                    <toolkit:DataForm.NewItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <toolkit:DataField Label="Last name" >
                                 <TextBox Text="1111111"/>
                            </toolkit:DataField>
                            </StackPanel>
                        </DataTemplate>
                    </toolkit:DataForm.NewItemTemplate>
                </toolkit:DataForm>
            </toolkit:DockPanel>
        
        <Button x:Name="CancelButton" Content="Отмена" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
        <Button x:Name="OKButton" Content="ОК" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />

        </Grid>
</controls:ChildWindow>
cs ChildWindow1

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SLCBDDSApp
{
    public partial class ChildWindow1 : ChildWindow
    {
        public ChildWindow1()
        {
            InitializeComponent();
        }

        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = true;
        }

        private void CancelButton_Click(object sender, RoutedEventArgs e)
        {
            this.DialogResult = false;
        }
    }
}
Вызываем Child кликом на кнопку расположенную на форме MainPage
Код: plaintext
1.
2.
3.
4.
5.
   private void button1_Click(object sender, RoutedEventArgs e)
        {
            ChildWindow1 child = new ChildWindow1();
            child.Show();
        }
Что не так почему не все отображается или DataForm нельзя кидать на "Чилд_Форму"? Спасибо
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37279181
Фотография уТКа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,

ну, а где же
Код: plaintext
1.
dfAddRecord.CurrentItem = <моя_новая_запись>
?
...
Рейтинг: 0 / 0
Добавление новых строк в таблицу
    #37282722
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс эксперимент зашел в тупик...
Сделал как в примере, в том случае если добавить
dfAddRecord.CurrentItem="Запись" в Child_add (моя Child'форма), то при открытии формы все отображается. Есть еще пример с использованием класса типа описание dataform описывают в отдельном файле
Код: plaintext
1.
2.
3.
4.
5.
    public class PlanAdd
    {
        [Display (Name="Код специальности")]
        public string name { get; set; }
    }
вызывается
Код: plaintext
1.
dfAddRecord.CurrentItem = new PlanAdd();
Также я не могу вызвать из другого окна
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
   public partial class Child_Window_Plan : ChildWindow
    {
        private z_plan_name newRecord { get; set; }
        public string Str_Coop, name_edit, kod_speciality_edit;
        public Child_Window_Plan()
        
        {
         InitializeComponent();
         this.newRecord = new z_plan_name();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
          
              dfAddRecord.CurrentItem = this.newRecord;
        }
Ругается dfAddRecord.CurrentItem = this.newRecord; (возможно пропущена ссылка на сборку)
Вопрос каким способом лучше описать поля DataForm в cs или xaml. И как вызвать dfAddRecord.CurrentItem = this.newRecord; из другого файла. Спасибо.
...
Рейтинг: 0 / 0
25 сообщений из 215, страница 2 из 9
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Добавление новых строк в таблицу
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]