c# - Object reference not set to an instance of an object in delete option of my code and another error in update option of my code -
i have used following code delete , edit values in gridview, click delete shows error:
object reference not set instance of object. in line 48 i.e. con.open();
please me solve it. , when click on edit , insert values in shown txtboxes , click update shows error:
specified argument out of range of valid values. in line 74 of code i.e. emailid = (textbox)gridview1.rows[e.rowindex].cells[7].findcontrol("emailid");
the code have used is-
using system; using system.collections.generic; using system.linq; using system.web; using system.web.ui; using system.web.ui.webcontrols; using system.data.sqlclient; using system.data; public partial class admin_viewsalesmandetails : system.web.ui.page { sqlconnection con; string strconnection = "data source=hp\\sqlexpress;database=mk;integrated security=true"; sqlcommand cmd; protected void page_load(object sender, eventargs e) { if (!ispostback) { bindgrid(); } } private void bindgrid() { using (sqlconnection con = new sqlconnection(strconnection)) { using (sqlcommand cmd = new sqlcommand()) { cmd.commandtext = "select * salesman_details"; cmd.connection = con; sqldatasource1.databind(); gridview1.datasource = sqldatasource1; gridview1.databind(); } } } protected void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e) { label empid = new label(); empid = (label)gridview1.rows[e.rowindex].cells[2].findcontrol("empid"); cmd = new sqlcommand("delete salesman_setails empid=" + empid.text + "", con); con.open(); int k = cmd.executenonquery(); con.close(); if (k == 1) { response.write("<script>alert('employee deleted successfully')</script>"); bindgrid(); } else { response.write("<script>alert('error occured while deleting')</script>"); bindgrid(); } } protected void gridview1_rowediting(object sender, gridviewediteventargs e) { gridview1.editindex = e.neweditindex; bindgrid(); } protected void gridview1_rowupdating(object sender, gridviewupdateeventargs e) { label empid = new label(); textbox phnno = new textbox(); textbox emailid = new textbox(); empid = (label)gridview1.rows[e.rowindex].cells[2].findcontrol("empid"); phnno = (textbox)gridview1.rows[e.rowindex].cells[5].findcontrol("phnno"); emailid = (textbox)gridview1.rows[e.rowindex].cells[7].findcontrol("emailid"); cmd = new sqlcommand("update salesman_details set phnno='" + phnno.text + "', emailid='" + emailid.text + "' empid=" + empid.text + "", con); con.open(); int k = cmd.executenonquery(); con.close(); if (k == 1) { response.write("<script>alert('employee updated successfully')</script>"); gridview1.editindex = -1; bindgrid(); } else { response.write("<script>alert('error occured while updating')</script>"); bindgrid(); } } protected void gridview1_rowcancelingedit(object sender, gridviewcancelediteventargs e) { gridview1.editindex = -1; bindgrid(); } protected void gridview1_pageindexchanging(object sender, gridviewpageeventargs e) { gridview1.pageindex = e.newpageindex; bindgrid(); } }
in gridview1_rowdeleting
, gridview1_rowupdating
haven't initialized con
, trying open it.
you can either instantiate connection @ declaration or during usage in events.
public partial class admin_viewsalesmandetails : system.web.ui.page { string strconnection = "data source=hp\\sqlexpress;database=mk;integrated security=true"; sqlconnection con = new sqlconnection(strconnection);
or better approach instantiate within using
statement in events. example.
protected void gridview1_rowdeleting(object sender, gridviewdeleteeventargs e) { label empid = new label(); empid = (label)gridview1.rows[e.rowindex].cells[2].findcontrol("empid"); cmd = new sqlcommand("delete salesman_setails empid=" + empid.text + "", con); using( con = new sqlconnection(strconnection)) { cmd.connection = con; //here con.open(); int k = cmd.executenonquery(); con.close(); if (k == 1) { response.write("<script>alert('employee deleted successfully')</script>"); bindgrid(); } else { response.write("<script>alert('error occured while deleting')</script>"); bindgrid(); } } }
using
statement ensure dispose
called on connection, (which close connection well), if exception occurs.
Comments
Post a Comment