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

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

14.12.2009, 11:46. Показов 2277. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru