Hulp bij het veranderen van data in een listview.

  • Onderwerp starter Onderwerp starter aiky
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

aiky

Gebruiker
Lid geworden
6 dec 2006
Berichten
26
Hallo,

Ik heb een probleem. Ik ben bezig met het leren van c#, op mijn eigen. (niet simpel).
Dus ik ben bezig met het programmeren van data die in een listview terecht komt.
Nu wil ik doormiddel van een klik op de data in de listview de onderstaande textboxen worden gevuld.(dit lukt)
Nu wil ik de data aanpassen en opnieuw opslaan op de positie die ik heb aangeklikt.
Alleen wanneer ik dit nu doen, wordt de data onderaan bijgeplaatst, met andere woorden niet op de positie die ik wil.

Kan er mij iemand bij helpen.

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AppData;
using Mybib;

namespace kliklistview
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private int kol;
        private int TabSize = 500;
        private List<Gegevens> datalist;
        private IComparer<Gegevens> Mvgl;
        private int nGeg;
        private Random gen = new Random(DateTime.Now.Second);

        private void Form1_Load(object sender, EventArgs e)
        {
            lvData.Items.Clear();
            lvData.GridLines = true;
            lvData.View = View.Details;
            lvData.FullRowSelect = true;
            lvData.Columns.Add("Nr", 40, HorizontalAlignment.Left);
            lvData.Columns.Add("VolgNr", 60, HorizontalAlignment.Left);
            lvData.Columns.Add("Naam", 100, HorizontalAlignment.Left);
            lvData.Columns.Add("VoorNaam", 100, HorizontalAlignment.Left);
            lvData.Columns.Add("GebDatum", 80, HorizontalAlignment.Center);
            datalist = new List<Gegevens>();
        }

        private void btnGen_Click(object sender, EventArgs e)
        {
            Tabelgeneren(TabSize);
        }

        private void Tabelgeneren(int size)
        {
            int loper;
            int getal;
            nGeg = size;

            try
            {
                for (loper = 0; loper < nGeg; loper++)
                {
                    getal = gen.Next(1, 998);
                    Gegevens el = new Gegevens(getal);
                    datalist.Add(el);
                }

                tonen();
            }
            catch (Exception x)
            {
                MessageBox.Show("Foutje" + x.Message);
            }
        }

        private void tonen()
        {
            lvData.Items.Clear();
            int loper = -1;

            foreach (Gegevens el in datalist)
            {
                loper++;
                lvData.Items.Add(el.Nr.ToString());
                lvData.Items[loper].SubItems.Add(el.Volgnr.ToString());
                lvData.Items[loper].SubItems.Add(el.Naam.ToString());
                lvData.Items[loper].SubItems.Add(el.Voornaam.ToString());
                lvData.Items[loper].SubItems.Add(el.GebDat.ToShortDateString());
            }

        }

        private void lvData_SelectedIndexChanged(object sender, EventArgs e)
        {
            for (int x = 0; x < lvData.Items.Count; x++)
            {
                if (lvData.Items[x].Selected)
                {
                    txtVolgNr.Text = lvData.Items[x].SubItems[1].Text.ToString();
                    txtNaam.Text = lvData.Items[x].SubItems[2].Text.ToString();
                    txtVoornaam.Text = lvData.Items[x].SubItems[3].Text.ToString();
                    txtGebDatum.Text = lvData.Items[x].SubItems[4].Text.ToString();
                    //MessageBox.Show(lvData.Items[x].SubItems[1].Text);
                }
            }
        }
        private Gegevens extra;
        private void btnBewaar_Click(object sender, EventArgs e)
        {
            extra = new Gegevens();
            extra.Nr = lvData.Items.Count + 1;
            extra.Volgnr =long.Parse( txtVolgNr.Text);
            extra.Naam = txtNaam.Text;
            extra.Voornaam = txtVoornaam.Text;
            extra.GebDat = DateTime.Parse(txtGebDatum.Text);
            datalist.Add(extra);
            tonen();
        }
    }
}
 
zou ik ook je andere bestanden mogen zoals form enz...
misschien zip van je project.
 
Hallo,

Intussen heb ik een oplossing gevonden.
Ik weet niet of het de correcte oplossing is, maar ze werkt wel.

Code:
int pos = lvdata.selectedIndices
// Dit zorgt ervoor dat ik weet welke positie ik heb aangeklikt in de datalist.

datalist[pos].Naam = txtnaam.Text
// Met dit stukje code kan ik de data in de datalist aanpassen.
 
goed :)
misschien kan je nog een validatie doen want je wilt misschien alleen tekst of alleen cijfers of combo en geen tekens.
dat soort dingen ;)

Byee VRC

P.S. kan je rechtsonder klikken op vraag is opgelost als je dit nog niet gedaan had ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan