На изменение в select делаете ajax запрос на сервер. Получаете перевод к нужному языку.
Далее у элементов label, ведь через них у вас реализовано отображение названий полей, меняете содержимое (наименование поля) на полученное значение.
Примерный код.
Можно не таскать заказы по таблицам, а хранить в одной.
Надо добавить поля [кто выполнил], [время]
У вас получится, что если не выполнили, то [время] is NULL
Написать запрос на выборку всех не выполненных за предыдущие дни - не сложно.
Когда вы делаете так xhr.onreadystatechange = this.loadListener
вы приравниваете указатель на функцию, и теряете контекст выполнения.
Его нужно сохранить.
Сохраните через замыкание:
var that = this;
xhr.onreadystatechange = function() { that.loadListener(); }
1. Передаете логин/пароль на site.com/login
2. Получаете ID сессии
3. Во всех последующих запросах в header область http запроса добавляете заголовок с ID сессии,
например (authorization: ZGNkOTU3NGZiODkwZTI3OTY1ZmE4M2ExNDllYWQyMTg=)
Методы классов или структур это обычные функции, которые имеют скрытый параметер на инстанс класса/структуры. Так что нет разницы по скорости доступа. С виртуальными функциями почти также.
Если показать образно, то это так:
class MyClass
{
public void Test();
}
// равнозначно
void Test(MyClass hiddenThis);
private Func<string, int> fn;
public Client(Func<string, int> fn)
{
this.fn = fn;
}
public int UseFuncClient()
{
fn("text");
}
var rs = new RemoteServer();
var cl = new Client(rs.Value);