Hej Det känns vanskligt att anta att ordningsföljden i din listview är densamma som i tabellen (d.v.s. att lvNya.Items[i] motsvarar ds1.Tables["Visa"].Rows[i]. Hej Nybörjare behöver lite hjälp! Listview och checkbox från databas
Sitter och testar mig fram i VS 2010 C# .NET och skulle behöva lite hjälp eller en fingervisning med ett problem jag inte lyckats lösa.
Jag har en access databas som jag hämtar info från till en listview med Checkboxes.
Vad jag försöker få till är att man ska kunna bocka i en Checkbox, trycka på en knapp och då sätta ett värde som är satt till false till true.
Jag har nedan kod som fungerar på sätt och vis.
Jag lyckas sätta värdet till true men inte på den raden jag har bockat i utan den tar slumpmässigt en rad och sätter till true.
Den första kolumnen jag laddar in i min listview är ID och använder jag
//MessageBox.Show(lvNya.Items[i].SubItems[0].Text); i koden nedan så ser jag att programmethittar rätt värde (subitem) men den skickar ändå true värdet till fel rad.
Grymt tacksam för hjälp!
private void btnTest_Click(object sender, EventArgs e)
{
for (int i = 0; i < lvNya.Items.Count; i++)
if (lvNya.Items[i].Selected == true)
{
ConnectionString();
System.Data.OleDb.OleDbCommandBuilder cb;
cb = new System.Data.OleDb.OleDbCommandBuilder(da);
System.Data.DataRow dRow2 = ds1.Tables["Visa"].Rows[i];
dRow2["Test"] = ("True");
da.Update(ds1, "Visa");
LoadListview();
break;
}
} Sv: Nybörjare behöver lite hjälp!
Har du en primärnyckel satt (vilket du bör ha) på din DataTable så skulle du kunna göra nåt i stil med
var primaryKey = GetPrimaryKeyFromListViewItemSomehow(lvNya.Items[i]);
ds1.Tables["Visa"].Rows.Find(primaryKey)["Test"] = true;
Sv:Nybörjare behöver lite hjälp!
Tack för ett försök till hjälp får det dock inte att fungera.
Får felmeddelandet
Table doesn't have a primary key.
Edit: Jag har Primarykey satt i access.
Första kolumnen i min tabell är ID som är satt till primärnyckel.
Jag har testat med nedan kod men känner att jag är helt ute och cyklar så får leta fram en guide och börja läsa på :(
for (int i = 0; i < lvNya.Items.Count; i++)
if (lvNya.CheckedItems[i].Checked == true)
{
System.Data.OleDb.OleDbCommandBuilder cb;
cb = new System.Data.OleDb.OleDbCommandBuilder(da);
ds1 = new DataSet();
string sql;
ConnectionString();
sql = "Select * from tblTest where Hej= false";
da = new System.Data.OleDb.OleDbDataAdapter(sql, con);
da.Fill(ds1, "Visa");
var primaryKey = (lvNya.CheckedItems[i].SubItems[0].Text);
ds1.Tables["Visa"].Rows.Find(primaryKey)["Hej"] = true;
LoadListview();
break;
}