(baje hasta la parte inferior del poste para encontrar la solución.)DropdownList.selectedIndex siempre 0 (sí, lo tengo! IsPostBack)
Tienes una página asp.net que contiene una de Datalist. Dentro de este datalist, hay es una plantilla que contiene una lista desplegable y cada vez que el datalist se llena con un elemento, se llama a ItemCreatedCommand. El elemento CreatedCommand es responsable del enlace de datos de la lista desplegable.
creo que el problema radica aquí, que estoy usando ItemCreatedCommand a poblarlo - pero las cosas extrañas es que si elijo el color "verde", la página se AutoPostBack y voy a ver que el desplegable está todavía en el green color, pero cuando se trata de utilizar es SelectedIndex, siempre me ... 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 un poco su código para de visión, pero todavía puede ver lo que intento hacer :) La razón de por qué estoy haciendo esto, y no declarar el origen de datos para los colores directamente i aspx-page, es que necesito ejecutar una prueba si (mostrarColores), pero no lo hago quiero para llenar la página html con el código que creo que debería estar en el código detrás del archivo.
EDIT: Después de tratar de alterar SelectedIndexChange - Estoy teniendo una confusión "lógica" en mi cabeza ahora - cómo voy a alterar elementos dentro de la lista de datos ? Dado que, hasta donde yo sé, I no tengo ninguna manera de comprobar cuál de los elementos en el datalist esta lista desplegable particular pertenece a ... O? Voy a probar algunas formas y ver lo que termino con;) Pero hacer favor publicar sus pensamientos en esta pregunta :)
SOLUCIÓN:
De cualquier burbuja que el evento ItemCommand, o controlar el evento, obtener el padre remitentes (que es un datalistItem y manipular elementos en 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;
}
Puede aclarar más en la razón de no agregar ing a la página? No estoy seguro de entenderlo correctamente. ¿Dice que no quiere saturar el ASPX/HTML, pero no veo ninguna razón por la que vincular el DropDown un poco diferente lo haría? –
Bueno, para ser honesto, creo que voy a renunciar al archivo "no desordenar el html", ya que he estado buscando durante horas, y parece que no hay una implementación fácil de lo que necesito. Pero la razón era mantener una estricta conversación de código y diseño. (Ahora debo agregar un if-check en el aspx) –