Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610

Редактирование данных с привязкой данных.

14.12.2009, 11:46. Показов 2319. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте еще раз, у меня такой вопрос:
Как удобнее и правильнее редактировать добавлять данные в таблицу БД с помошью компонентов Win Forms. В частности меня интересует
например имеем на форме 1 DataGridView с привязанной таблицей, по умолчанию данные можно добавлять и редактировать прямо в этом компоненте, но мне почему-то кажется что лучше редактировать данные в отдельной форме в которой простые компоненты типа TextBox привязаны к конкретной записи той же таблицы БД, подскажить как лучше это организовать. Может подскажете где почитать или пример какой-нибудь.
Заранее благодарю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2009, 11:46
Ответы с готовыми решениями:

Expression Blend 4 анимация с привязкой данных
Проблема в следующем: Создаю контрол в бленде (мигающая лампочка), все хорошо она мигает, однако делает она это пока что только одним...

Не могу разобраться с привязкой данных в WPF
Есть вот такой GroupBox <GroupBox x:Name="groupBox" Grid.Column="2" Header="{Binding}" DataContext="{Binding ElementName=xDgBird,...

Поведение ComboBox с привязкой к базе данных
Доброго дня. Схема такая: При изменении свойства Text, свойству ItemsSource присваивается таблица с данными...

3
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
14.12.2009, 13:25
Цитата Сообщение от Sergei Посмотреть сообщение
Может подскажете где почитать
Sergei, Посмотри книгу Программирование на Microsoft ADO.NET 2.0. . Насколько помню, там такие способы реализации показаны.
1
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
14.12.2009, 14:28  [ТС]
Спасибо смотрел.
C#
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace Chapter_13
{
    public partial class DetailForm : Form
    {
        public DetailForm()
        {
            InitializeComponent();
        }
 
        BindingSource orderDetailsBindingSource, productsBindingSource;
        NorthwindDataSet.ProductsDataTable productsTable;
        DataRowView orderDetailDataRowView;
 
        public void EditDetail(BindingSource OrderDetailsBindingSource,
                               BindingSource ProductsBindingSource)
        {
            this.productsBindingSource = ProductsBindingSource;
            this.productsTable = (NorthwindDataSet.ProductsDataTable)((DataView)this.productsBindingSource.List).Table;
 
            this.orderDetailsBindingSource = OrderDetailsBindingSource;
            this.orderDetailDataRowView = (DataRowView)this.orderDetailsBindingSource.Current;
            if (this.orderDetailDataRowView.IsNew)
            {
                NorthwindDataSet.ProductsRow product = this.productsTable[0];
                orderDetailDataRowView["Quantity"] = 1;
                orderDetailDataRowView["ProductID"] = product.ProductID;
                orderDetailDataRowView["UnitPrice"] = product.UnitPrice;
            }
 
            this.productIDComboBox.DisplayMember = "ProductName";
            this.productIDComboBox.ValueMember = "ProductID";
            this.productIDComboBox.DataSource = this.productsBindingSource;
            this.productIDComboBox.DataBindings.Add("SelectedValue", this.orderDetailsBindingSource, "ProductID");
            this.productIDComboBox.SelectionChangeCommitted += new EventHandler(productIDComboBox_SelectionChangeCommitted);
 
            this.unitPriceTextBox.DataBindings.Add("Text", this.orderDetailsBindingSource, "UnitPrice", true, DataSourceUpdateMode.OnValidation, "<Null>", "C2");
 
            this.quantityTextBox.DataBindings.Add("Text", this.orderDetailsBindingSource, "Quantity", true, DataSourceUpdateMode.OnValidation, "<Null>", "");
            this.quantityTextBox.TextChanged += new EventHandler(quantityTextBox_TextChanged);
 
            this.itemTotalTextBox.DataBindings.Add("Text", this.orderDetailsBindingSource, "ItemTotal", true, DataSourceUpdateMode.OnValidation, "", "C2");
 
            if (this.orderDetailDataRowView.IsNew)
            {
                this.itemTotalTextBox.Text = this.unitPriceTextBox.Text;
            }
 
            if (this.ShowDialog() == DialogResult.OK)
                this.orderDetailsBindingSource.EndEdit();
            else
                this.orderDetailsBindingSource.CancelEdit();
        }
 
        void quantityTextBox_TextChanged(object sender, EventArgs e)
        {
            this.UpdateItemTotal();
        }
 
        void UpdateItemTotal()
        {
            int quantity;
            decimal unitPrice;
            if (int.TryParse(this.quantityTextBox.Text, out quantity) &&
                decimal.TryParse(this.unitPriceTextBox.Text, System.Globalization.NumberStyles.Currency, null, out unitPrice))
                this.itemTotalTextBox.Text = (unitPrice * quantity).ToString("C");
        }
 
        void productIDComboBox_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (this.productIDComboBox.SelectedIndex != -1)
            {
                int productID = (int)this.productIDComboBox.SelectedValue;
                NorthwindDataSet.ProductsRow productRow = this.productsTable.FindByProductID(productID);
                this.unitPriceTextBox.Text = productRow.UnitPrice.ToString("C");
 
                this.UpdateItemTotal();
            }
        }
    }
}
Здесь описывается форма для редактирования данных.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void orderDetailsEditButton_Click(object sender, EventArgs e)
        {
            using (DetailForm detailForm = new DetailForm())
            {
                detailForm.EditDetail(this.order_DetailsBindingSource, this.productsBindingSource);
            }
        }
 
        private void orderDetailsAddButton_Click(object sender, EventArgs e)
        {
            DataRowView newOrderDetail = (DataRowView)this.order_DetailsBindingSource.AddNew();
 
            using (DetailForm detailForm = new DetailForm())
            {
                detailForm.EditDetail(this.order_DetailsBindingSource, this.productsBindingSource);
            }
        }
Здесь вызовы.
Мне кажется сложновато передавать таким образом BindingSource
может есть другие способы это сделать.?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
14.12.2009, 18:03
Цитата Сообщение от Sergei Посмотреть сообщение
Мне кажется сложновато передавать таким образом BindingSource
может есть другие способы это сделать.?
Что вы понимаете под словом "сложновато"?
Использовать BindingSource удобно, т.к. в другой форме сразу получаете доступ ко всем данным, а также к текущей выделенной позиции. В добавок, в новой форме сохраняется возможность быстро осуществить привязку данных к контролам.

Как вариант, можно передавать в форму значения ячейки/строки. И после закрытия формы, доставать из нее новые значения и подменять ими старые значения в ячейке/строке.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2009, 18:03
Помогаю со студенческими работами здесь

Проблема с привязкой связанных данных к ComboBox при использовании EF
Имеется модель данных. В ней 3 таблицы связаны каскадно один ко многим. В данном случае я работаю только с двумя таблицами: Таблица...

Редактирование пользователем данных из базы данных и сохранение уже отредактированных данных
Здравствуйте форумчане!Вынужден обратиться к вам,так как сам ничего не могу сделать:( У меня такая задача: создать небольшой сайтик,в...

Написать калькулятор с привязкой к базе данных
Помогите пожалуйста! Нужно написать калькулятор. Который будет сохранять историю в базу данных(БД). В БД как минимум сохранять, в...

Вывод календаря с привязкой к базе данных
Добрый день, Господа. Подскажите пожалуйста как сделать выборку. хочу в таблицу выводить столбец &quot;avg&quot; по месяцам см. на...

Сделать сайт с привязкой к базам данных
Устроился на работу по професии сразу после универа и знания то, как таковые только базовые,ну и сказал сделать сайт с привязкой к базам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru