2016-02-29 4 views
0

Я пытаюсь сохранить значение DropDownList, когда я нажимаю кнопку, но когда я нажимаю на нее, появляется страница обновления и когда-либо получает индекс 0 DropDownList. Вот код из метода btnAccept_Click из .cs:Не перезагружать DropDownList, когда кнопка OnClick ASP

if (comboOpciones.SelectedIndex == 1) 
{ 
    if (serv.modifyMovie(comboModifica.selectedIndex + 1, textboxTitulo.Text, Convert.ToInt32(textboxAño.Text), textBoxGenero.Text, textboxNacionalidad.Text, 0) == 1) 
    { 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert(' Succesful Modify ');</script>"); 
    } 
    else 
    { 
     Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert(' Unsuccesful modify');</script>"); 
    } 
} 

значение возвращает '' comboModifica.selectedIndex все время индекс 0

Вот код моего веб-формы ASP:

<table class="centrada"> 
    <tr> 
    <td> 
    </td> 
    <td> 
     <p>¿Qué desea hacer?</p> 
     <asp:DropDownList ID="comboOpciones" runat="server" AutoPostBack="True" OnSelectedIndexChanged="comboOpciones_SelectedIndexChanged"> 
     <asp:ListItem>Añadir</asp:ListItem> 
     <asp:ListItem>Modificar</asp:ListItem> 
     </asp:DropDownList> 
    </td> 
    <td> 
    </td> 
    <td> 
     <div runat="server" id="divModificar"> 
     <p>Introduce ID de película a modificar:</p> 
     <asp:DropDownList ID="comboModifica" runat="server"></asp:DropDownList> 
     </div> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <asp:Label ID="Label1" runat="server" Text="Nuevo título:"></asp:Label> 
    </td> 
    <td> 
     <asp:TextBox ID="textboxTitulo" runat="server" MaxLength="30"></asp:TextBox> 
    </td> 

    <td> 
     <asp:Label ID="Label2" runat="server" Text="Año:"></asp:Label> 

    </td> 
    <td> 
     <asp:TextBox ID="textboxAño" runat="server" MaxLength="4"></asp:TextBox> 
    </td> 

    </tr> 
    <tr> 
    <td> 
     <asp:Label ID="Label3" runat="server" Text="Género:"></asp:Label> 

    </td> 
    <td> 
     <asp:TextBox ID="textBoxGenero" runat="server" MaxLength="15"></asp:TextBox> 
    </td> 
    <td> 
     <asp:Label ID="Label4" runat="server" Text="Nacionalidad:"></asp:Label> 

    </td> 
    <td> 
     <asp:TextBox ID="textboxNacionalidad" runat="server" MaxLength="25"></asp:TextBox> 
    </td> 
    </tr> 
    <tr> 
    <td> 
     <asp:Label ID="Label5" runat="server" Text="Director:"></asp:Label> 

    </td> 
    <td> 
     <asp:DropDownList ID="comboDirectores" runat="server"></asp:DropDownList> 
    </td> 
    <td> 
    </td> 
    <td> 
    </td> 
    </tr> 
    <tr> 
    <td colspan="4"> 
     <asp:Button ID="btnAccept" runat="server" Text="Enviar" AutoPostBack="false" OnClick="btnAccept_Click"/> 

    </td> 
    </tr> 
</table> 

Как я могу получить значение DropDownList?

+0

, как и когда вы заселять свои «comboOpciones»? – Gusman

+0

Я заполняю этот выпадающий список в ASP-коде – cnbandicoot

ответ

2

Ваша проблема в том, что combobox инициализируется в каждой обратной передаче. Поэтому вам нужно определить, является ли это обратной передачей или нет. Инициализировать поле со списком только тогда, когда оно не является обратной передачей. Пусть BindMyCbo() - это метод, который связывает все значения с обязательным comboBox, здесь comboModifica. Затем вам нужно вызвать метод только тогда, когда загрузка страницы не является PostBack. поэтому вызов метода (в пределах Вашего мероприятия page_load) будет иметь следующий вид:

if (!IsPostBack) 
    { 
     BindMyCbo(); 
     //Rest of code 
    } 

Так выпадающий инициализируются в загрузке страницы и остается таким же после постбэка

+0

Мне нужно сделать этот вызов, когда страница загружается? – cnbandicoot

+0

да совершенно. включить три строки кода в 'page_load' –

+0

Большое вам спасибо. Это работает. Я не могу голосовать за вас, но ваш ответ работает на меня. – cnbandicoot