Одна вещь, которую я заметил, это то, что у вас нет параметра для @EmployeeID здесь
con.Open();
cmd.CommandText = "UPDATE EMPLOYEE SET EmployeeName = @EmployeeName, SALARY = @Salary, DEPARTMENTID = @DepartmentID WHERE EMPLOYEEID = @EmployeeID";
cmd.Parameters.AddWithValue("@EmployeeName", EmployeeName);
cmd.Parameters.AddWithValue("@DepartmentId", DepartmentID);
cmd.ExecuteNonQuery();
Еще одна вещь, которую я укажу, заключается в том, что в вашей функции getEmployeeID () ... вы получаете EmployeeID на основе имени, продажи, отдела ... Нет гарантии, что эти поля будут уникальными.
Поместите фактический идентификатор сотрудника в сетку и используйте его в качестве ключа.
Почему вы вставляете запись вместо обновления?
Я не вижу никакого возможного способа, чтобы Update_Btn_Click () вставил запись.
Я бы поставил точку останова и убедился, что это исполняемый код.
Вы можете скрыть EmployeeID следующим образом:
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" InsertVisible="False" ReadOnly="True">
<HeaderStyle CssClass="hide" Width="0px" HorizontalAlign="Center" />
<ItemStyle CssClass="hide" Width="0px" HorizontalAlign="Center" />
</asp:BoundField>