Реализация шаблона Observer для выполнения метода в классе - PullRequest
0 голосов
/ 23 октября 2011

Я использую c # [ASP.NET 2.0 - VS 2005] и хочу реализовать шаблон наблюдателя для запуска метода (находящегося в классе) по мере изменения индекса DropDown.Существует три DropDowns и Label Control, которые должны отображать недавно сгенерированный код схемы в режиме реального времени, как и при изменении индекса DropDown.

public sealed class GetSchemeCode:INotifyPropertyChanged
{

    private string _distCode;
    private string _blockCode;
    private string _schmType;


    public string DistCode
    {
        get { return _distCode; }
        set { _distCode = value; }
    }
    public string BlockCode
    {
        get { return _blockCode; }
        set { _blockCode = value; }
    }
    public string SchemeType
    {
        get { return _schmType; }
        set { _schmType = value; }
    }


    public GetSchemeCode()
    {
        //
        // TODO: Add constructor logic here
        //
    }


    protected string GetNewSchemeCode()
    {
        SqlCommand cmdSchmCode = new SqlCommand("GenerateSchemeCode", dbConnection.cn);
        try
        {
            cmdSchmCode.CommandType = System.Data.CommandType.StoredProcedure;
            //Add Parameters
            cmdSchmCode.Parameters.AddWithValue("@districtCode", DistCode.ToString());
            cmdSchmCode.Parameters.AddWithValue("@blockCode", BlockCode.ToString());
            cmdSchmCode.Parameters.AddWithValue("@schemeType", SchemeType.ToString());
            dbConnection.OpenConnection("Scheme");
            return cmdSchmCode.ExecuteScalar();
        }
        catch (Exception)
        {
            throw;
        }
        finally
        {
            cmdSchmCode.Dispose();
            dbConnection.CloseConnection();
        }
    }

}

Ответы [ 2 ]

1 голос
/ 23 октября 2011

C # заменил шаблон Observer, у него есть события;события представляют собой реализацию шаблона Observer на уровне языка.То, что вы хотите сделать, это создать событие на вашем объекте, а затем заставить своих наблюдателей подписаться на него.

1 голос
/ 23 октября 2011

Сделайте что-то вроде приведенного ниже кода, чтобы подключить свойство выбранного индекса в выпадающем списке.Я верю, что Asp.Net реализует шаблон Observer за кулисами.Вы можете установить свойство AutoPostBack и привязку Event либо в коде, либо в html-разметке.

public GetSchemeCode()
{
        DistCodeDropDownList.AutoPostBack = true;
        DistCodeDropDownList.SelectedIndexChanged += new EventHandler(DistCodeDropDownList_SelectedIndexChanged);

        // TODO: Hook up the other DropDownLists here. as well
}

    void DistCodeDropDownList_SelectedIndexChanged(object sender, EventArgs e)
    {
        CodeOutputLabel.Text = GetNewSchemeCode();
    }
...