datagridview - C# InvalidCastException Only for One Value? -
i have datagridview , have code see whether or not dropdowns have been changed.
private void tbl_transactionsdatagridview_editingcontrolshowing(object sender, datagridvieweditingcontrolshowingeventargs e) { combobox combo = e.control combobox; if (combo != null && tbl_transactionsdatagridview.currentcell.columnindex == 3) { // remove existing event-handler, if present, avoid // adding multiple handlers when editing control reused. combo.selectedindexchanged -= new eventhandler(combobox_selectedindexchanged); // add event handler. combo.selectedindexchanged += new eventhandler(combobox_selectedindexchanged); } if (combo != null && tbl_transactionsdatagridview.currentcell.columnindex == 6) { // remove existing event-handler, if present, avoid // adding multiple handlers when editing control reused. combo.selectedindexchanged -= new eventhandler(status_selectedindexchanged); // add event handler. combo.selectedindexchanged += new eventhandler(status_selectedindexchanged); } } when columnindex 6, jumps following code. whats maddening works value select dropdown except 1. if select 1, invalidcastexception, telling me need use number smaller infinity. if select other number, fires supposed to. doing wrong?
private void status_selectedindexchanged(object sender, eventargs e) { object ostatus = new object(); ostatus = ((combobox)sender).selectedvalue; if (!convert.isdbnull(ostatus)) { sendkeys.send("{tab}"); if (convert.toint32(ostatus) != 1) { tbl_transactionsdatagridview.currentrow.cells["checkinemployee"].value = environment.username; tbl_transactionsdatagridview.currentrow.cells["closedate"].value = datetime.now; } if (convert.toint32(ostatus) == 1) { tbl_transactionsdatagridview.currentrow.cells["checkoutemployee"].value = environment.username; tbl_transactionsdatagridview.currentrow.cells["checkinemployee"].value = null; tbl_transactionsdatagridview.currentrow.cells["closedate"].value = null; } } }
do mean using combobox.selectedvalue? involves data binding , can't tell you're binding to.
if you're adding ints combobox.items collection use selecteditem. property can return null... note null input convert.isdbnull returns false. see here.
finally, cast or convert int32 so:
private void status_selectedindexchanged(object sender, eventargs e) { object ostatus = new object(); ostatus = ((combobox)sender).selecteditem; if (ostatus != null && !convert.isdbnull(ostatus)) { sendkeys.send("{tab}"); if (((int)ostatus) != 1) { tbl_transactionsdatagridview.currentrow.cells["checkinemployee"].value = environment.username; tbl_transactionsdatagridview.currentrow.cells["closedate"].value = datetime.now; } else { tbl_transactionsdatagridview.currentrow.cells["checkoutemployee"].value = environment.username; tbl_transactionsdatagridview.currentrow.cells["checkinemployee"].value = null; tbl_transactionsdatagridview.currentrow.cells["closedate"].value = null; } } } or matter, use combobox.selectedindex instead.
Comments
Post a Comment