Выпадающий список, заполненный из SQL

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

Есть 4 варианта. Мне нужно, чтобы один из вариантов превратился в textbox.visible = false;

Я не уверен, что это правильно. У меня это в SQL как Cancel_Reason

protected void ddlCancelReason_SelectedIndexChanged(object sender, EventArgs e)
{
    string Item = ddlCancelReason.SelectedValue;

    if (Item == "Non-Payment")
    {
        tbReturn.Visible = false;
    }

}

person user3508633    schedule 12.06.2014    source источник
comment
Что не так с кодом, который у вас есть? Вы получаете сообщение об ошибке?   -  person crthompson    schedule 13.06.2014
comment
Это WinForms или ASP.NET?   -  person Icemanind    schedule 13.06.2014
comment
Он этого не делает. Текстовое поле все еще там.   -  person user3508633    schedule 13.06.2014
comment
Приложение работает без ошибок   -  person user3508633    schedule 13.06.2014
comment
Вы прошли через код? Каково выбранное значение text для выбранного элемента? Он даже входит в оператор if?   -  person crthompson    schedule 13.06.2014
comment
В SQL ID = 2. Должен ли я изменить его на 2?   -  person user3508633    schedule 13.06.2014
comment
Просто поставьте точку останова на оператор if и посмотрите, что это за значение.   -  person Icemanind    schedule 13.06.2014


Ответы (1)


Вы привязали событие SelectedIndexChanged к своему DropDownList? Если вы сделали:

В вашем случае это не сработает, потому что вы не включили свойство AutoPostBack файла DropDownList.

Измените свой код DropDownList с:

<asp:dropdownlist id="ddlCancelReason" runat="server" datatextfield="Cancel_Reason" datavaluefield="ID"> </asp:dropdownlist>

To:

<asp:dropdownlist id="ddlCancelReason" AutoPostback="true" runat="server" datatextfield="Cancel_Reason" datavaluefield="ID"> </asp:dropdownlist>

Просто добавьте AutoPostback="true".

Тогда это будет работать:

protected void ddlCancelReason_SelectedIndexChanged(object sender, EventArgs e)
{
    string Item = ddlCancelReason.SelectedValue;

    if (Item == "Non-Payment")
    {
        tbReturn.Visible = false;
    }
}
person Swag    schedule 12.06.2014
comment
Он все еще не делает этого. - person user3508633; 13.06.2014
comment
Это может помочь вам больше: - person user3508633; 13.06.2014
comment
‹asp:DropDownList ID=ddlCancelReason runat=server DataTextField=Cancel_Reason DataValueField=ID› ‹/asp:DropDownList› - person user3508633; 13.06.2014
comment
Да. Второй сообщает, что ссылка на объект не указывает на экземпляр объекта. - person user3508633; 13.06.2014
comment
@user3508633 user3508633 можешь показать код в Page_Load? - person Swag; 13.06.2014
comment
protected void Page_Load (отправитель объекта, EventArgs e) { string Item = ddl.SelectedItem.ToString(); если (SessionConstants.facility == 0) { Response.Redirect(Login.aspx); } if (Item == Non-Payment) { tbReturn.Visible = false; } если (!IsPostBack) { FillDropDowns(); Получить данные(); } } - person user3508633; 13.06.2014
comment
@TheOddGuy - измените свой ответ, чтобы использовать выпадающее измененное событие. - person Hogan; 13.06.2014
comment
@Hogan Спасибо, это действительно лучшее решение. - person Swag; 13.06.2014
comment
Вы проверяете if (Item == Non-Payment) в своем событии page_load, и это не будет иметь никакого значения, сохраненного в вашей переменной Item, и, следовательно, текстовое поле не станет видимым. Ваше событие ddlCancelReason_SelectedIndexChanged должно работать с приведенным выше кодом.. !! - person Ron; 13.06.2014