powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Нужен совет чтобы программа правильно заработала
7 сообщений из 7, страница 1 из 1
Нужен совет чтобы программа правильно заработала
    #34957436
midavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте! В ADO.NET-е еще новичек и прощу просветить в следующем:
Есть таблица в базе:
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE [dbo].[Addresses] (
	[AddressesID] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[Address] [varchar] ( 200 
	[PostalCode] [int] NULL ,
	[Parish] [varchar] ( 50 )
	[District] [varchar] ( 20 ) )

Программа должна загружать данные из таблицы в DataGridView (грид в режиме только отображение).
Также на форме есть TextBox-ы со значенями активной строки в гриде.
Выбрав в гриде строку TextBox-ы должны соответственно отображать активную запись.
(вот здесь как раз не пойму как сделать так чтоб при переходе с записи на др. запись в гриде
тажке переход осуществлялся и для TextBox-ов)

Есть также 5 кнопок: Add, Edit, Delete, SaveToDB
Нужен функцианал этим кнопкам:
1) Add - добавить пустую запись (TextBox-ы принимают пустые значения). Ввожу данные в TextBox-ы нажимаю Edit и данные сохраняются в датасет
2) Edit - данные сохраняются в датасет
3) Delete - удалить текущую запись которая отображается в TextBox-ах
4) SaveToDB - сохранить изменения датасета в БД


Написал код не он не работает как надо. Посоветуйте где и что изменить/добавить!

Код: 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.
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.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//my namespaces
using System.Data.SqlClient;

namespace Elections
{
    public partial class frmAddresses : Form
    {
        private DataSet dstAddresses;
        private SqlDataAdapter adpAddresses;
        private CurrencyManager cmAddresses;
        private DataTable addressesTable;
       
        public frmMainMenu objmainmenu;
        public frmAddresses()
        {
            InitializeComponent();
     
            adpAddresses = new SqlDataAdapter
                ("select * from Addresses",
                "server=local;database=Elections;uid=sa;pwd=hopgo");

            SqlCommandBuilder builder = new SqlCommandBuilder(adpAddresses);
   
            dstAddresses = new DataSet("AddressesDataSet");
            adpAddresses.Fill(dstAddresses, "Addresses");
            addressesTable = dstAddresses.Tables["Addresses"];
            dgdAddresses_1.DataSource = dstAddresses.Tables["Addresses"];//.DefaultView;
        }

        private void frmAddresses_Load(object sender, EventArgs e)
        {
            txtAddressID.DataBindings.Add("Text", dstAddresses, "Addresses.AddressesID");
            txtAddress.DataBindings.Add("Text", dstAddresses, "Addresses.Address");
            txtPostalCode.DataBindings.Add("Text", dstAddresses, "Addresses.PostalCode");
            txtParish.DataBindings.Add("Text", dstAddresses, "Addresses.Parish");
            txtDistrict.DataBindings.Add("Text", dstAddresses, "Addresses.District");

            cmAddresses = (CurrencyManager)BindingContext[dstAddresses, "Addresses"];
         }
  
        private void dgdAddresses_1_SelectionChanged(object sender, EventArgs e)
        {
         // возможно здесь нужен код обрабатывающии й момоент перехода на след строку
        }

        private void btnAddressAdd_Click(object sender, EventArgs e)
        {
           try
           {   
             cmAddresses.AddNew();
           }
           catch (Exception ex)
           {
             MessageBox.Show(ex.Message, "Add failed!",
             MessageBoxButtons.OK, MessageBoxIcon.Error);
           }
        }
        private void btnAddressEdit_Click(object sender, EventArgs e)
        {
            cmAddresses.EndCurrentEdit();
            cmAddresses.Refresh();
        }
        private void btnAddressDelete_Click(object sender, EventArgs e)
        {
            if (cmAddresses.Count >  0 )
            {
                cmAddresses.RemoveAt(cmAddresses.Position);

            }
            else MessageBox.Show("No Address to Delete!", "Delete Address",
                                 MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        private void btnAddressSave_Click(object sender, EventArgs e)
        {
            UpdateDB();
        }
        private void btnAddressPrior_Click(object sender, EventArgs e)
        {
            cmAddresses.Position--;
        }
                private void btnAddressNext_Click(object sender, EventArgs e)
        {
            cmAddresses.Position++;
        }
        private void UpdateDB()
        {
            if (dstAddresses.HasChanges())
                try
                {
                    adpAddresses.Update(dstAddresses, "Addresses");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Save in DB failed!",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
        }      
      
    }
}
...
Рейтинг: 0 / 0
Нужен совет чтобы программа правильно заработала
    #34958386
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНаписал код не он не работает как надо. Посоветуйте где и что изменить/добавить!
А что конкретно не работает как надо? И какая студия используется?
Если 2005-я, то рекомендовал бы в качестве источника данных для грида использовать не таблицу датасета, а BindingSource:
Код: plaintext
1.
2.
BindingSource bs = new BindingSource();
bs.DataSource = dstAddresses.Tables["Addresses"];
dgdAddresses_1.DataSource = bs;

Сответственно и прибиндить текстбоксы к BindingSource.
...
Рейтинг: 0 / 0
Нужен совет чтобы программа правильно заработала
    #34958462
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витал
Если 2005-я, то рекомендовал бы в качестве источника данных для грида использовать не таблицу датасета, а BindingSource:

Можно вас попросить пояснить почему ?
...
Рейтинг: 0 / 0
Нужен совет чтобы программа правильно заработала
    #34958690
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke Витал
Если 2005-я, то рекомендовал бы в качестве источника данных для грида использовать не таблицу датасета, а BindingSource:

Можно вас попросить пояснить почему ?
А студия 2005-я?
BindingSource предоставляет удобные методы рабты с данными. В т.ч., если мы связали какие-то контролы с одним и тем же BindingSource, то дополнительных мер по их синхронизации уже можно не прменять. При этом можем отслеживать переходы по записям, отлавливая событие CurrentChanged...
...
Рейтинг: 0 / 0
Нужен совет чтобы программа правильно заработала
    #34958701
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую.
...
Рейтинг: 0 / 0
Нужен совет чтобы программа правильно заработала
    #34963171
midavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> Витал

Спасибо за ответ! Да 2005-я студия.
Правда уже сам лазая по палитре компонентов случайно обратил внимание на этот компонент и по аналогии с тем как в Дельфях прикрутил его.

Еще можно насколько понял DataView также использовать.

п.с.: А главное в книжках ни слова нет о том как осуществить эту синхронизацию...
...
Рейтинг: 0 / 0
Нужен совет чтобы программа правильно заработала
    #34967011
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕще можно насколько понял DataView также использовать.
да
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Нужен совет чтобы программа правильно заработала
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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