editarea de obiecte

Va trebui, asa cum am promis, sa facem
adaugarea/ modificarea / stergerea de obiecte( pe scurt, C(R)UD – create,
(read), update, delete). Luam un buton din Toolbox, il tragem pe forma, ii
setam din proprietati ( apasati F4) numele la btnAdd si text la “&Add” (
&A e pentru ca, atunci cind apasam <ALT> + A , sa fie ca si cind dam
click pe button)

 

 

Acum dati dublu click pe button – si veti
intra in codul de click. Avem o problema : trebuie ca user-ul sa introduca
numele Publisher-ului. O sa creeam o noua forma : Click dreapta pe BookWin, Add
=> Windows Form- si ii veti da denumirea de frmPublisherAdd.cs. Apasati F4
si la Text puneti : Add Publisher

 

Adaugati un Label( Name: lblName , Text :
&Name) si un textbox ( Name : txtName)

Adaugam acum un Button de Add ( Name :
btnAdd, Text : &Add) si unul de Exit (Name : btnExit, Text : E&xit)

 

Codul de pe btnExit e cel mai usor ( dati
dublu click pe buton)

  private void
btnExit_Click(object sender, EventArgs e)

        {

            this.Close();//close the form

       
}

Codul de pe Button-ul de Add :

 

            private void
btnAdd_Click(object sender, EventArgs e)

        {

            BookObjects.Publisher
p = new BookObjects.Publisher();

            p.Name = txtName.Text;

            p.Save();

this.Close();//close the form

       
}

 

E
clar ca trebuie sa scriem metoda de Save pe Publisher

Inapoi
la clase : si acolo vom scrie metoda de save.

  public void
Save()

        {

            string
strSQL = ” insert into
Publisher(NamePublisher”
;

            if (!string.IsNullOrEmpty(this.Site))

                strSQL += “,SitePublisher
;

 

            strSQL +=
) Values (“
;

 

            strSQL += “‘”
+ this.Name.Replace(“‘”,“””) + “‘”;//terminator for string in SQL is ‘ – so replace with ”

           

            if (!string.IsNullOrEmpty(this.Site))

                strSQL += “,”
+“‘”+ this.Site.Replace(“‘”, “””)
+“‘”;//terminator
for string in SQL is ‘ – so replace with ”

 

 

            strSQL +=
)”
;

 

           

            Settings.ExecuteSQL(strSQL);

           

           

           

        }

 

In
sfirsit, sa scriem codul pentru adaugare de pe forma de list:

E
clar ca va trebui sa facem re incarcarea datelor  – deci o sa luam codul de pe
frmPublisherList_Load si o sa il punem in o functie generica , RebindData()

 

private void
btnAdd_Click(object sender, EventArgs e)

        {

            frmPublisherAdd
f = new frmPublisherAdd();

            f.ShowDialog(this);

            RebindData();

       
}

 

private void
RebindData()

        {

BookObjects.ColPublisher publishers = new
BookObjects.ColPublisher();

            publishers.Load();

            colPublisherBindingSource.DataSource =
publishers;

        }

 

Sa
verificam functionarea

Dati
CTRL+ F5 , apasati Add – introduceti un nume – apasati Add – si verificati ca
se vede in lista ceea ce ati introdus.

 

Sa
facem acum stergerea.

Adaugati
alt buton(Name = btnDelete, Text = &Delete) si sa scriem cod pentru delete

private void
btnDelete_Click(object sender, EventArgs e)

        {

 

            BookObjects.Publisher
p = colPublisherBindingSource.Current as
BookObjects.Publisher;

            if (p !=
null)

            {

                //avert
the user

                if (MessageBox.Show(this,
“Delete “ + p.Name, “Delete”, MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.No)

                    return;

 

 

                p.Delete();

                RebindData();

            }

       
}

 

In
sfirsit, sa scriem codul pentru update: iarasi buton, iarasi cod

private void
btnUpdate_Click(object sender, EventArgs e)

        {

            BookObjects.Publisher
p = colPublisherBindingSource.Current as
BookObjects.Publisher;

 

            if (p ==
null)

                return;

 

            frmPublisherUpdate
f = new frmPublisherUpdate(p);

            f.ShowDialog(this);

            RebindData();

       
}

 

Pentru
asta, adaugam o alta forma, in care sa facem update .

Dar
avem neaparata nevoie de un publisher pe care sa facem update.Vom modifica
constructorul formei ca sa accepte ca parametru de intrare un publisher.

 

Ca
sa punem valorile deja obtinute in text box-uri, avem 2 variante :

Fie
codam de mina de doua ori ( ceva de genul  txtName.Text= m_Publisher.Name si ,
pe salvare, m_Publisher.Name= txtName.Text),fie lucram cu DataBindings direct .
Prefer acum, pentru rapiditate, a doua varianta :

 

public partial class frmPublisherUpdate
: Form

    {

        private
BookObjects.Publisher m_Publisher;

        public
frmPublisherUpdate(BookObjects.Publisher pub)

        {

            m_Publisher = pub;

            InitializeComponent();           

        }

 

       

        private void frmPublisherUpdate_Load(object
sender, EventArgs e)

        {

            txtName.DataBindings.Add(“Text”, m_Publisher, “Name”);

            txtSite.DataBindings.Add(“Text”, m_Publisher, “Site”);

        }

 

        private void btnSave_Click(object
sender, EventArgs e)

        {

            m_Publisher.Update();

            this.Close();

        }

 

        private void btnExit_Click(object
sender, EventArgs e)

        {

            this.Close();

        }

 

 

   
}

 

Sa
scriem si codul de salvare pe publisher :

  public void
Update()

        {

            string
strSQL = ” update Publisher set “;

            strSQL +=
NamePublisher = “
;

 

            strSQL += “‘”
+ this.Name.Replace(“‘”,
“””) + “‘”;

 

            strSQL += “,”;

 

            strSQL +=
SitePublisher = “
;

 

            strSQL += “‘”
+ this.Site.Replace(“‘”,
“””) + “‘”;

 

 

            strSQL +=
where IDPublisher = “
+ this.IDPublisher;                           

            strSQL +=
;

 

 

            Settings.ExecuteSQL(strSQL);

       
}

 

 

Ca
tema de acasa, ramine sa faceti acelasi lucru pentru tabela Author.

Data
viitoare o sa facem un mic refactoring de code… si o sa facem un program de
setup pentru aplicatia Windows.

 

           

Leave a Reply

Your email address will not be published. Required fields are marked *