(Прокрутите вниз до нижней части сообщения, чтобы найти решение.)
Получил страницу asp.net, которая содержит
DataList. Внутри этого datalist, есть
шаблон, содержащий
выпадающий список и каждый раз
Datalist заполнен элементом,
ItemCreatedCommand вызывается.
itemCreatedCommand отвечает за
привязка данных к выпадающему списку.
Я думаю, что проблема заключается в том, что
Я использую ItemCreatedCommand для
заселить его - но странные вещи
что если я выберу цвет "зеленый",
страница будет автоматически возвращаться, и я буду
увидеть, что выпадающий по-прежнему на
цвет зеленый, но при попытке использовать
это SelectedIndex, я всегда получаю 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*
Я немного сузил код для
просмотра, но все же вы можете увидеть, что
Я пытаюсь сделать :) Причина
почему я это делаю, а не декларирую
источник данных для цветов напрямую
я aspx-страницу, что мне нужно запустить
проверить если (showColors), но я не хочу
загромождать html-страницу кодом
что я чувствую, должно быть в коде
за-файла.
РЕДАКТИРОВАТЬ: после попытки изменить
SelectedIndexChange - у меня есть
"логическая" путаница в моей голове сейчас -
как мне изменить элементы внутри
DataList? Так как, насколько я знаю - я
нет никакого способа проверить, какой из
элементы в этом списке данных
конкретный выпадающий список принадлежит ...
Или же? Я собираюсь попробовать несколько способов
и посмотрим чем я в итоге;) Но сделаю
пожалуйста, оставьте свои мысли по этому вопросу
вопрос :)
РЕШЕНИЕ:
Либо отправьте событие в ItemCommand, либо обработайте событие, получите родителя отправителя (который является datalistItem и манипулируйте там элементами.
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;
}