Атрибут OnChange в пользовательском DropDownList не отображается - PullRequest
2 голосов
/ 27 марта 2012

У меня есть пользовательский пользовательский контроль, который в основном представляет собой раскрывающийся список, предварительно заполненный значениями из базы данных.

<asp:DropDownList ID="selResponseTimes" runat="server" SkinID="filterSkin">                
</asp:DropDownList>

Код:

public partial class Response_Times_Drop_Down : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable objDataTable = DAL.ExecuteDataTable("sp_cl_Response_Times_Get", null);
            selResponseTimes.DataSource = objDataTable;
            selResponseTimes.DataTextField = "TM_Code";
            selResponseTimes.DataValueField = "TM_Code";
            selResponseTimes.DataBind();
        }
    }

    public string SelectedValue
    {
        get
        {
            return selResponseTimes.SelectedValue;
        }
        set
        {
            selResponseTimes.SelectedValue = value;
        }
    }

}

Элемент управления добавлен на мою страницуи работает нормально:

<asp:ResponseTimesDropDown runat="server" ID="selResponse" />

Я добавляю события на стороне клиента в качестве атрибутов к стандартным элементам управления на Page_Load, используя следующее:

txtCallRelatedCall.Attributes.Add("onblur", "CheckRelatedCall()");

Однако, когда я пытаюсьчтобы сделать это с помощью моего пользовательского элемента управления, они не добавляются.

selResponse.Attributes.Add("onchange", "CalculateResponseTime()");

Однако, если я отлаживаю код, атрибуты добавляются в коллекцию, создается впечатление, что они просто не выводятся на страницу,Почему это?

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

На каком этапе жизненного цикла страницы вы добавляете атрибуты?

Попробуйте добавить их в Page_Init

Protected void Page_Init(object sender, EventArgs e)
{
    selResponse.Attributes.Add("onchange", "CalculateResponseTime()");
}

РЕДАКТИРОВАТЬ (см. Комментарии):

Public void CalculateResponseEnabled()
{
        selResponseTimes.Attributes.Add("onchange", "CalculateResponseTime()");
}

Затем вы можете вызвать CalculateResponseEnabled из команды.

selResponse.CalculateResponseEnabled();
0 голосов
/ 20 августа 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...