i using linq statement update data in database. first user search name , details displayed in gridview , user select 1 employee , data displayed in relative textbox , dropdownlist.
when select data in both dropdown works fine , database gets updated , if select 1 dropdown shows error
"the update statement conflicted foreign key constraint "fk_emp_location". conflict occurred in database "empdept", table "dbo.location", column 'locationid'."
//update button
using (dataclassesdatacontext dc = new dataclassesdatacontext()) { emp employee = dc.emps.single(emp => emp.empid == id); employee.empfirstname = txtfirstname.text; employee.emplastname = txtlastname.text; employee.mgrid = int.parse(txtmgrid.text); employee.birthdate = convert.todatetime(txtdob.text); employee.email = txtemail.text; employee.mobile = txtmobile.text; employee.locationid = ddllocation.selectedindex; employee.salary = int.parse(txtsalary.text); employee.deptid = ddldepartment.selectedindex; //dc.emps.insertonsubmit(employee); dc.submitchanges(); scriptmanager.registerclientscriptblock(this, gettype(), "alertmessage", "alert('record updated successfully!!!')", true); clearfields(); } //grid view
protected void gvsearch_selectedindexchanged(object sender, eventargs e) { try { ddldepartment.items.removeat(0); ddllocation.items.removeat(0); string ddldept = gvsearch.selectedrow.cells[9].text; string ddlloc = gvsearch.selectedrow.cells[10].text; listitem deptremove = ddldepartment.items.findbytext(ddldept); ddldepartment.items.remove(deptremove); listitem locremove = ddllocation.items.findbytext(ddlloc); ddllocation.items.remove(locremove); txtempid.text = gvsearch.selectedrow.cells[1].text; txtfirstname.text = gvsearch.selectedrow.cells[2].text; txtlastname.text = gvsearch.selectedrow.cells[3].text; txtmgrid.text = gvsearch.selectedrow.cells[4].text; txtdob.text = gvsearch.selectedrow.cells[5].text; txtemail.text = gvsearch.selectedrow.cells[6].text; txtmobile.text = gvsearch.selectedrow.cells[7].text; txtsalary.text = gvsearch.selectedrow.cells[8].text; ddldepartment.items.insert(0, new listitem(ddldept)); ddllocation.items.insert(0, new listitem(ddlloc)); } catch { } } //dropdownlist
private void bindddl() { try { using (dataclassesdatacontext dc = new dataclassesdatacontext()) { var location = l in dc.locations select l; ddllocation.datasource = location; ddllocation.datavaluefield = "locationid"; ddllocation.datatextfield = "locationname"; ddllocation.databind(); ddllocation.items.insert(0, new listitem("--select location--")); var department = d in dc.depts select d; ddldepartment.datasource = department; ddldepartment.datavaluefield = "deptid"; ddldepartment.datatextfield = "deptname"; ddldepartment.databind(); ddldepartment.items.insert(0, new listitem("--select department--")); } }


you have used selectedindex, instead use selectedvalue:
employee.locationid = int.parse(ddllocation.selectedvalue); same applies department:
employee.deptid = int.parse(ddldepartment.selectedvalue); you're lucky there no id matching selected-index, error instead of inconsistencies. reason why foreign-key constraints useful.
Comments
Post a Comment