2011-12-29 5 views
1

Как я могу уведомить внешний «источник» изменений, которые я делаю, используя делегат.Делегат C# для уведомления об изменениях

В основном у меня есть форма, я заполняю эту форму и нажимаю кнопку, которая сохраняет мои заполненные данные в таблицу БД в виде XML. Я хочу иметь возможность сообщить, что изменения в форме были сделаны с помощью делегата, который может вызвать другой «объект».

public void Changes_Made() 
{ 
    //yay. Changes made. 
} 

protected void okButton_Click(object sender, EventArgs e) 
{ 
    //... 
    //save data 
    //... 
    Changes_Made(); 
} 

Практический сценарий: как я сохранить свои предпочтения, сетки, которая показывает мои данные будут обновлять и использовать предпочтение, установленное когда я нажимаю на ok_button. Есть ли в этом смысл?

ответ

1

Вы можете сделать это для уведомления.

public ctor() // Method where you want to hook the event, can be constructor or any thing else 
{ 
    //Hook to event 
    obj.ChangesMade += Changes_Made; 
    // Here obj is the object of type in which you have okButton_Click 
    // and ChangesMade event declaration 

} 
public void Changes_Made() 
{ 
    //yay. Changes made. update grid 
} 


//declare event 
public event EventHandler ChangesMade(); 
protected void okButton_Click(object sender, EventArgs e) 
{ 
    //... 
    //save data 
    //... 

    //raise event 
    if(ChangesMade != null) 
     ChangesMade(this, new EventArgs()); 
} 
0

Если я правильно вас понимаю, сетка и кнопка сохранения находятся на одной странице. Если это так, просто вызовите PopulateGridData(); или что-то в этом роде сразу после сохранения изменений.

+0

У меня нет доступа к сетке. Я просто хочу сообщить, что я изменил настройки и что сетка должна отображаться в соответствии с этими изменениями. –

+0

они не на одной странице. они находятся на разных собраниях. Я могу только установить предпочтения (какие столбцы должны отображаться, nr строк pe page и т. Д.) –

+0

Тогда я ничего не получаю: вы используете ASP.NET. Если сетка не находится на одной странице, но вы сохранили свои данные, сетка отобразит обновленную информацию в следующий раз, когда кто-то ее перезагрузит. Или вы хотите рассказать уже загруженные сетки в браузерах других пользователей, чтобы перезагрузить новые данные? Если позже это то, что вы хотите, решение больше javascript, чем C#. Проверьте [SignalR] (https://github.com/SignalR/SignalR). –

Смежные вопросы