16. marts 2006 - 13:57Der er
3 kommentarer og 1 løsning
Add DataRow til DataTable - Value is already present
I en tabel har jeg nogle kunder, hvor jeg vil tilføje en ny række til. Selvom rækken ikke findes i tabellen, sker det med mellemrum at jeg får en exception - Value 'xxx' is already present.
tabellen er databound til en dropdownlist - ddlCustomers.
Hvordan sikrer jeg mig at tabellen kun opdateres når den ikke findes i tabellen i forvejen? Jeg har prøvet nedenstående, men omkring halvdelen af gangene, får jeg af vide at den allerede eksisterer.
Ved at databinde til en gridview, kan jeg se at det tilføjes ok, men det er ikke i min dropdown.... mystisk
skulle mene at afviklingen sker sekventielt linie for linie.. .eller ???
her er min kode: // a table from previous selections on other page DataTable foundCustomers = (DataTable) Session["found customers"];
// recent customers from database DataTable recentCustomers = (DataTable) db.GetRecentCustomers(userID);
// create row based on recent customers table DataRow customer = recentCustomers.NewRow();
// get selected item from another table string id = foundCustomers.Rows[gvCustomers.SelectedIndex][0].ToString();
// set 'ID' for the row to add customer["ID"] = id;
// set 'customer' for the row to add customer["customer"] = foundCustomers.Rows[gvCustomers.SelectedIndex][2].ToString();
// is the id already in the 'recent orders' table?? bool found = recentcustomers.rows.contains(id);
// if not in 'recent orders' table - add it if (!found) { recentCustomers.Rows.Add(customer); ddlCustomers.Items.Clear(); ddlCustomers.DataSource = recentCustomers; ddlCustomers.DataTextField = "customer"; ddlCustomers.DataValueField = "ID"; ddlCustomers.DataBind();
// select the added item ddlCustomers.Items.FindByValue(id).Selected = true; } else { lblFoundCustomerInfo.Text = "Order is already in list"; ddlCustomers.DataBind(); }
// test gridview viser tabellen 'recent customers' gvTest.Datasource = recentCustomers; gvTest.DataBind();
tænkt eksempel: 'recentCustomers' indeholder 1, 2, 3 (primærnøgler).. fra en anden tabel 'foundCustomers', har jeg en ny row med 'id' 100,
den bliver fint indsat i tabellen og vises fint i mit gridview 'gvTest', men ikke altid i dropdownlisten 'ddlCustomers'. Når den ikke vises i 'ddlCustomers', får jeg en exception - value 'D' is already present
Ideen er at jeg har en kundeliste med top 10 anvendte kunder, men skal jeg bruge en anden end dem der allerede er i listen, skal jeg tilføje en ny kunde fra mit kartotek af alle mine kunder. Er kunden i top 10 har jeg ikke brug for at tilføje. Men ved tilføjelser sker der altså fejl ind imellem (50/50)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.