Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Нужен совет чтобы программа правильно заработала / 7 сообщений из 7, страница 1 из 1
22.11.2007, 10:48
    #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
22.11.2007, 14:30
    #34958386
Витал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет чтобы программа правильно заработала
авторНаписал код не он не работает как надо. Посоветуйте где и что изменить/добавить!
А что конкретно не работает как надо? И какая студия используется?
Если 2005-я, то рекомендовал бы в качестве источника данных для грида использовать не таблицу датасета, а BindingSource:
Код: plaintext
1.
2.
BindingSource bs = new BindingSource();
bs.DataSource = dstAddresses.Tables["Addresses"];
dgdAddresses_1.DataSource = bs;

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

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

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

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

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

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


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