net ejemplos dropdownlist asp c# asp.net drop-down-menu postback

c# - ejemplos - DropdownList.selectedIndex siempre 0(sí, sí tengo! IsPostBack)



dropdownlist asp.net c# (4)

En cuanto a tu segunda pregunta:

Le sugiero que elimine AutoPostBack del menú desplegable, agregue un botón "Actualizar" y actualice los datos en el botón Haga clic en evento.

El botón puede contener valores de Command y CommandArgument, por lo que es fácil asociarlo con un registro de base de datos.

(Desplácese hacia abajo hasta la parte inferior de la publicación para encontrar la solución).

Tengo una página asp.net que contiene un Datalist. Dentro de este datalist, hay una plantilla que contiene una lista desplegable y cada vez que el datalist se llena con un elemento, se llama a un ItemCreatedCommand. El itemCreatedCommand es responsable de la vinculación de datos de la lista desplegable.

Creo que el problema radica aquí, que estoy usando ItemCreatedCommand para poblarlo, pero lo extraño es que si elijo el color "verde", la página se autopostback, y veré que el menú desplegable aún está en el color verde. , pero cuando trato de usar su SelectedIndex, siempre obtengo 0 ...

protected void DataListProducts_ItemCreatedCommand(object source, DataListItemEventArgs e) var itemId = (String)DataListProducts.DataKeys[e.Item.ItemIndex]; var item = itemBLL.GetFullItem(itemId); var DropDownListColor = (DropDownList)e.Item.FindControl("DropDownListColor"); //Also tried with : //if(!isPostBack) { DropDownListColor.DataSource = item.ColorList; DropDownList.Color.Databind(); // } End !isPostBack) Label1.test = DropDownListColor.SelectedIndex.toString(); // <- THIS IS ALWAYS 0! *grr*

He reducido el código un poco para verlo, pero todavía se puede ver lo que estoy tratando de hacer :) La razón de por qué estoy haciendo esto, y no declarar el origen de datos para los colores directamente en aspx-page, es que necesito ejecutar una prueba si (showColors), pero no quiero saturar la página html con el código que creo que debería estar en el código detrás del archivo.

EDITAR: Después de tratar de alterar SelectedIndexChange - Tengo una confusión "lógica" en mi cabeza ahora - ¿cómo voy a alterar elementos dentro del datalist? Dado que, hasta donde yo sé, no tengo forma de comprobar a qué elementos del datalist pertenece esta lista desplegable en particular ... ¿O? Voy a probar de varias maneras y veré con qué termino;) Pero por favor publique sus opiniones sobre esta pregunta :)

SOLUCIÓN:

O bien burbujear el evento a ItemCommand, o manejar el evento, obtener el padre de los remitentes (que es un elemento datalist y manipular los elementos allí.

protected void DropDownListColor_SelectedIndexChanged(object sender, EventArgs e) { DropDownList dropDownListColor = (DropDownList)sender; DataListItem dataListItem = (DataListItem)dropDownListColor.Parent; var item = items[dataListItem.ItemIndex]; var color = item.ItemColor[dropDownListColor.SelectedIndex]; var LabelPrice = (Label)dataListItem.FindControl("LabelPrice"); LabelPrice.Text = color.Price; }


Gracias por tu solución

protected void ddlOnSelectedIndexChanged(object sender, EventArgs e) { try { ModalPopupExtender1.Show(); if (ViewState["Colors"] != null) { FillColors(ViewState["Colors"].ToString()); } DropDownList dropDownListColor = (DropDownList)sender; DataListItem dataListItem = (DataListItem)dropDownListColor.Parent; Image image = (Image)dataListItem.FindControl("mdlImage"); Label ProductCode = (Label)dataListItem.FindControl("lblprdCode"); Label ProductName = (Label)dataListItem.FindControl("lblProdName"); DropDownList ddlQuantity = (DropDownList)dataListItem.FindControl("ddlQuantity"); Label ProductPrice = (Label)dataListItem.FindControl("lblProdPrice"); Label TotalPrice = (Label)dataListItem.FindControl("lblTotPrice"); //Label ProductPrice = (Label)dataListItem.FindControl("lblProdPrice"); } catch (Exception ex) { } }


Cuando DataList está unida a datos, el AutoPostBack no se ha procesado todavía, es decir, los valores en el evento ItemCreated siguen siendo los valores originales.

Debe controlar el evento SelectedIndexChange del control desplegable.