DataGridVieuw als artikel lader

Status
Niet open voor verdere reacties.

ellvini

Gebruiker
Lid geworden
21 sep 2008
Berichten
16
Heey heey allemaal
Ik ben een kassa systeem aan het ontwerpen en nu vroeg ik mij af hoe het mogelijk was om een datagridvieuw te gebruiken om artikels in te laden.
Capture.PNG
Dit is een voorbeeld :p weet iemand hoe je dit kunt maken ?
en als je dan klikt in de eerste lijn opent een nieuw form.
 
alles begint met een goede database je moet dat eerst goed uitdokteren wat en waar je de relaties gaat leggen en een datagrid maken in c# met visual studio is niet zo heel moeilijk.
aritkelcode->artikelen.artikelcode

database toevoegen aan solution
database opmaken (velden aanmaken) , dat erin
datasourceconfigurator doorlopen
bam.jpg
 
Het is misschien handig als je even wat info geeft over wat je nu hebt.
Bijvoorbeeld als je al een artikel class hebt is het simpel om een List<Artikel> collection te maken en die aan de datasource van een datagrid te koppelen.

Maar ik denk dat je liever een ListView control wilt hebben (zoals in je voorbeeld image). Persoonlijk vind ik een datagrid alles behalve gebruikersvriendelijk.
 
ik zal je morgen wel een gedetaileerde stap per stap uitleg verlenen, maar inderdaad datagrid is niet zo aangenaam voor de gebruiker maar dit kan je simpel wijzigen met de server browser zal ik ook aanhalen.
 
Ö listvieuw

Ö dat wist ik niet dat dat met een listvieuw kon Ö wel helemaal geen idee hoe dat gedaan word dan Ö, hoe doe je dat met een listvieuw ?
heb nu mijn eigen datagridvieuw ontworpen wat nogal :p wat omslacht is

Mijn eigen datagrisvieuw
Code:
public partial class MyGirdVieuw : DataGridView
    {
        public MyGirdVieuw()
        {
            InitializeComponent();
        }


        public void prijstot() {
            try
            {
                this.Enabled = false;
                this.Enabled = true;

                if(int.Parse(this.Rows[this.CurrentCell.RowIndex].Cells[2].Value.ToString()) < 1 )
                    this.Rows[this.CurrentCell.RowIndex].Cells[2].Value = 1;

               
                this.Rows[this.CurrentCell.RowIndex].Cells[4].Value = int.Parse(this.Rows[this.CurrentCell.RowIndex].Cells[2].Value.ToString()) * double.Parse(this.Rows[this.CurrentCell.RowIndex].Cells[3].Value.ToString());
                
            }
            catch (Exception)
            {
                this.Rows[this.CurrentCell.RowIndex].Cells[2].Value = 1;
                this.Rows[this.CurrentCell.RowIndex].Cells[4].Value = 0;
                
            }
          }
        public bool volgendelijn() {

            try
            {
                this.Rows[this.CurrentCell.RowIndex + 1].ReadOnly = false;
                this.CurrentCell = this.Rows[this.CurrentCell.RowIndex + 1].Cells[0];
                this.BeginEdit(true);
                return true;
            }
            catch (ArgumentOutOfRangeException)
            {
                return true;
            }
        
        }

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {

            if (keyData == Keys.Enter)
            {
                if (this.CurrentCell == this.Rows[this.CurrentCell.RowIndex].Cells[0]){

                    int row = this.CurrentCell.RowIndex;
                    this.Enabled = false;
                    this.Enabled = true;
                   ArtikelInput ai = new ArtikelInput();
                   ai.Show();
                   ai.FormClosing += delegate
                   {
                      
                       if (ai.getArtikel() != null) {

                           this.Rows[this.CurrentCell.RowIndex].Cells[0].Value = ai.getArtikel().ArtikelNr;
                           this.Rows[this.CurrentCell.RowIndex].Cells[1].Value = ai.getArtikel().Omschrijving;
                           this.Rows[this.CurrentCell.RowIndex].Cells[3].Value = ai.getArtikel().Prijs;

                           this.CurrentCell = this.Rows[this.CurrentCell.RowIndex].Cells[2];
                           this.BeginEdit(true);
                           this.CellValueChanged += delegate {
                              // if(this.CurrentCell == this.Rows[this.CurrentCell.RowIndex].Cells[2])
                               prijstot();

                           };

                       }


                   };

                    return true;
                }
                else if (this.CurrentCell == this.Rows[this.CurrentCell.RowIndex].Cells[2])
                {
                    
                    prijstot();

                    return volgendelijn();

                }
                   

                else
                {

                    if (this.CurrentCell.ColumnIndex < ColumnCount - 1)
                    {

                        this.CurrentCell = this.Rows[this.CurrentCell.RowIndex].Cells[this.CurrentCell.ColumnIndex + 1];
                        return true;
                    }
                    else
                    {
                        return volgendelijn();

                    }
                }
            }

            return base.ProcessCmdKey(ref msg, keyData);
        }
    }

Form waar datagridvieuw in staat
Code:
public partial class Facturen : Form
    {
        public Facturen()
        {
            InitializeComponent();
        }

 private void Facturen_Load(object sender, EventArgs e)
        {
           
            string[] row = new string[] { "", "" };
            dataGridView1.Rows.Add(row);
            for (int i = 1; i < 13; i++)
            {
                
                dataGridView1.Rows.Add(row);
                dataGridView1.Rows[i].ReadOnly = true;
            }

            
        }

  private void btnRemoveRow_Click(object sender, EventArgs e)
        {
            try
            {

                int current = this.dataGridView1.CurrentRow.Index;
                dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex + 1].ReadOnly = false;
                dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex + 1].Cells[0];
                dataGridView1.BeginEdit(true);
                dataGridView1.Rows.RemoveAt(current);
                if (dataGridView1.RowCount < 13) {
                    string[] row = new string[] { "", "" };
                    dataGridView1.Rows.Add(row);
                    dataGridView1.Rows[12].ReadOnly = true;
                }

            }
            catch (Exception)
            {
                
                

            }

            Double totaal = 0.0;
         
                this.Enabled = false;
                this.Enabled = true;
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    try
                    {
                        totaal += Double.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());
                    }
                    catch (Exception)
                    {


                    }

                txtTotaal.Text = totaal + " €";

            }
            
        }

        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            Double totaal = 0.0;
            if (e.ColumnIndex == 4) {
                this.Enabled = false;
                this.Enabled = true;
                for (int i = 0; i < dataGridView1.RowCount; i++)
                {
                    try
                    {
                        totaal += Double.Parse(dataGridView1.Rows[i].Cells[4].Value.ToString());
                    }
                    catch (Exception)
                    {
                        
                        
                    }
                   
                }

                txtTotaal.Text = totaal + " €";
            
            }
        }
}

En ziet er zo uit Zieterzouit.JPG
Maar als iemand een beter idee heeft ? altijd welkom :p
 
oei

alain1988
dat is niet echt wat ik bedoel hoor :p
Maar je kan het ook doen blijkbaar via een listvieuw ?
weet iemand hoe juist ?
 
Hier is een voorbeeldje
http://dl.dropbox.com/u/63676419/ListView.zip

14jucyt.png



*voorbeeld code is om je een idee te geven hoe je het zou kunnen doen
 
Is het eigenlijk mogelijk om in een listvieuw een rij aan te passen ? maar niet in de code maar als je op de rij in het veld klikt ?
 
Niet met de out of the box listview. Je kunt wel een popup form gebruiken om de data te wijzigen of een textbox onder een listview.
 
Mmmm dan ga ik men eigen datagrid ontwerpen:p ben goed opweg en werkt al nice ^^ zal als hij ontworpen is hier poste :D
 
Zo ongebruiksvriendelijk is een DataGrid toch ook niet? Het lijkt mij juist handig i.c.m. een database.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan