OK got it now. Rene' had some great advice on using the rowfocuschanging event. If you have an ancestor dw, I'd add an instance variable called is_mode or something similar. If you don't have an ancestor dw, I'd create one and add the variable with get/set methods. When the user clicks the edit button, call dw_1.of_set_mode("edit") or however you want to do it. In the rowfocuschanging event, call this.of_get_mode and see if it's edit. If it's edit, return 1. Also look at the SelectRow method for row selection (you will also need to check the mode before doing the selectrow, because if you're in edit mode you don't want to select another row). As far as making all the other rows grey, I'd probably add a "dummy" field with a value of 0, to the select. You can conditionally set the background color to grey if it's 0, and maybe white if it's 1. If the user clicks edit, set the dummy column to 1 (and when they save, put the mode back to view and dummy column to 0). I think that should take care of everything you were looking to do.