datagridview refresh

Status
Niet open voor verdere reacties.

takamine

Gebruiker
Lid geworden
28 mei 2008
Berichten
16
Kan iemand mij vertellen hoe ik de waarde van een listbox kan doorgeven aan een datagridview om zo alleen de waardes van de datagridview te zien wat horen bij het ID van de listbox.

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
this.tblStudentTableAdapter.Fill(this.database1DataSet1.tblStudent);
}

Bovenstaande vult de dataset volledig maar ik wil de parameter van de listbox mee kunnen geven.

thx
 
dat zal met een query moeten ;)

Code:
SELECT * FROM [tabel]
WHERE ([USERID] LIKE '%' + @comboboxvalue + '%')

let op!: de % tekens zorgen ervoor dat voor dat nummer (laten we 1 zeggen) nog alles VOOR en achter mag staan. zoek je op 1 dan krijg je dus ook 192 en 231, wil je dit niet haal dan de % weg.

de C code:

Code:
{
this.tblStudentTableAdapter.Fill(this.database1DataSet1.tblStudent, combobox1.text);
}


een query toevoegen moet zo:

ga naar je Data sources schermpje (in het menu Data>show data sources)
rechtermuisknop op je DATASET en kies voor "Edit dataset with designer"

klik nu met de rechtermuisknop op je tableadapter en kies voor "Add>query".


Succes ! :D
 
Laatst bewerkt:
Ik heb bovenstaande uitgevoerd. Echter het verschil wat ik heb is dat ik geen string heb maar een integer als SID.
Ik krijg deze met geen mogelijkheid in onderstaande code verwerkt.

this.tblStudentTableAdapter.FillBy3(database1DataSet1.tblStudent, listBox1.ValueMember);

Wat ik wil is de waarde van de SID (= een int) listbox1

thx
 
Heb ik ook al geprobeerd.
Alleen geeft dit geen int terug maar een object.

Ik ben een beetje radeloos!!


thx
 
Je laad dus een listbox met int's?
vanuit een database?
en userID is dan je primary key?

wat als je een 2de listbox laad met de items van de eerste listbox, en vervolgens de 2de listbox gebruikt om de query mee uit te voeren?
 
Ik heb een een tabel die er als volgt uitziet

SID (int)
Naam (VarChar(50))

Deze twee velden heb ik gekoppeld aan mijn listbox.
Waarvan naam de display waarde is en SID is de valuemember.

Ik wil dus de valuemember doorgeven aan mijn query welke ik gebruik om mijn tablegrid op te bouwen.

SELECT tblStudent.SID_Student, tblStudent.Voornaam, tblStudent.Achternaam, tblStudent.SID_School
FROM tblStudent INNER JOIN
tblSchool ON tblStudent.SID_School = tblSchool.SID
WHERE (tblStudent.SID_School = @listbox1value)
 
Houd je er rekening mee dat de eerste item in de listbox index 0 is en niet index 1?


je kan je display en valuemember ook gewoon naar een string omzetten met.tostring()

Code:
listbox1.DisplayMember = tblstudent.Columns["Naam"].ToString();
listbox1.ValueMember = tblstudent.Columns["SID"].ToString();

[edit]hoop dat ik al je tabelnamen enzo goed heb getypt :)[/edit]
 
Als ik onderstaande uitvoer krijg ik de waarde SID te zien. Ik wil de waarde wat in de tabel SID staat zien.
Hoe krijg ik die? Het liefst als integer


this.tblStudentTableAdapter.FillBy3(database1DataSet1.tblStudent, "int waarde van listbox1" );
 
Ik snap niet wat je bedoelt :)

Als ik onderstaande uitvoer krijg ik de waarde SID te zien. Ik wil de waarde wat in de tabel SID staat zien.

je krijgt de waarde sid te zien zeg je, en je wilt de waarde sid zien?

dan is het tog goed:D?
 
SID is de kolomnaam in mijn database de valuemember dus.

Ik wil de waarde wat in de kolom SID staat zien.

thx
 
Code:
SELECT * FROM [tabel]
WHERE ([[COLOR="#FF0000"]SID[/COLOR]] LIKE @listboxvalue)

sla de query op als, getSID


Code:
this.tblStudentTableAdapter.getSID(database1DataSet1.tblStudent, listbox1.selectedvalue );

of

Code:
this.tblStudentTableAdapter.getSID(database1DataSet1.tblStudent, listbox1.selectedindex );


[edit] je kunt een string later weer omzetten naar een int als je met string wilt werken ;)
 
dit kan niet!!

listbox1.selectedvalue is een object deze krijg je ook niet gecast naar een int.

Heb je nog een ander voorstel?

thx
 
maak een student class met de data die je nodig hebt:

Code:
    public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public Student()
        {
            
        }
        public Student(int id, string name)
        {
            Id = id;
            Name = name;
        }
    }


Vul je listbox met deze studenten met een simpele list (in voorbeeld nieuwe studenten aangemaakt ipv van datatable)
in je eigen code maak je bv een method die met je datatable as input een List<Student> returned

omdat je het geselecteerde item naar Student cast kun je heel gemakkelijk ook alles deze student gebruiken ipv alleen zijn ID

Code:
        private void PopulateStudentListBox()
        {
            List<Student> students = new List<Student>
                               {
                                   new Student(1, "Peter"),
                                   new Student(2, "Anna"),
                                   new Student(3, "Daniel"),
                                   new Student(4, "Rob"),
                                   new Student(5, "Sanne")
                               };

            lbStudents.DataSource = students;
            lbStudents.ValueMember = "Id";
            lbStudents.DisplayMember = "Name";
        }

        private void lbStudents_SelectedIndexChanged(object sender, EventArgs e)
        {
            Student selectedStudent = (Student) lbStudents.SelectedItem;

            //do what you want with the student (and its id, name etc)
        }
 
oke,
maar hoe kan ik dan value 1 doorgeven inplaats van Peter.
Peter wil ik laten zien aan de gebruiker en onder water wil ik het id van Peter doorgeven.

thx
 
Code:
        private void lbStudents_SelectedIndexChanged(object sender, EventArgs e)
        {
            Student selectedStudent = (Student) lbStudents.SelectedItem;

            //do what you want with the student (and its id, name etc)
        }

je kunt hier dus:

txtStudentId.Text = selectedStudent.Id;
txtStudentName.Text = selectedStudent.Name;

en het ID kun je dus ook gewoon doorgeven aan iets anders
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan