У меня есть 3 выпадающих списка и одно изображение.Сначала ddl (марки: BMW, AUDI, VAZ) получает свои данные из SQL Server и устанавливает selectedIndex = 0
.Второй ddl (модели: A6, TT, Z4, X5 и т. Д.) Зависит от первого ddl.Если пользователь выбирает index = 0
(AUDI) в первом ddl, то второй ddl показывает A6 и TT.Третий ddl (цвета) зависит от второго ddl.Если пользователь select index = 0
(AUDI) в первом ddl и select index = 1
(TT) во втором ddl, то третий ddl показывает синий и серебристый цвета.Изображение зависит от всех трех ddl.Как это реализовать?
Мой код:
пространство имен DynamicWebApplication {открытый частичный класс RentForm: System.Web.UI.Page {открытый статический флаг bool = false;IBLClient frontEnd = new FrontEnd ();
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
StampOfCarsDropDownList.DataSource = SqlDataSource1;
StampOfCarsDropDownList.DataValueField = "Stamp";
StampOfCarsDropDownList.DataTextField = "Stamp";
StampOfCarsDropDownList.DataBind();
if (StampOfCarsDropDownList.SelectedIndex == -1)
{
StampOfCarsDropDownList.SelectedIndex = 0;
ModelOfCarsDropDownList.SelectedIndex = 0;
ColorOfCarsDropDownList.SelectedIndex = 0;
}
ListItem stampOfCar = StampOfCarsDropDownList.Items[StampOfCarsDropDownList.SelectedIndex];
string stamp = stampOfCar.Text;
foreach (RentCar c in frontEnd.GetListOfModels(stamp))
{
ListItem temp = new ListItem(c.Model);
if (!ModelOfCarsDropDownList.Items.Contains(temp))
ModelOfCarsDropDownList.Items.Add(temp);
}
ListItem modelOfCar = ModelOfCarsDropDownList.Items[ModelOfCarsDropDownList.SelectedIndex];
string model = modelOfCar.Text;
foreach (RentCar c in frontEnd.GetListOfModels(stamp))
{
ListItem temp = new ListItem(c.Color);
if ((c.Model == model) && (!ColorOfCarsDropDownList.Items.Contains(temp)))
ColorOfCarsDropDownList.Items.Add(temp);
}
//UploadImage(stamp, model, ColorOfCarsDropDownList.Items[ColorOfCarsDropDownList.SelectedIndex].Text);
}
}
protected void ColorOfCarsDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
ListItem stampOfCar = StampOfCarsDropDownList.Items[StampOfCarsDropDownList.SelectedIndex];
string stamp = stampOfCar.Text;
ListItem modelOfCar = ModelOfCarsDropDownList.Items[ModelOfCarsDropDownList.SelectedIndex];
string model = modelOfCar.Text;
ListItem colorOfCar = ColorOfCarsDropDownList.Items[ColorOfCarsDropDownList.SelectedIndex];
string color = colorOfCar.Text;
//UploadImage(stamp, model, color);
}
protected void ModelOfCarsDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
ColorOfCarsDropDownList.Items.Clear();
ColorOfCarsDropDownList.SelectedIndex = 0;
ListItem stampOfCar = StampOfCarsDropDownList.Items[StampOfCarsDropDownList.SelectedIndex];
string stamp = stampOfCar.Text;
ListItem modelOfCar = ModelOfCarsDropDownList.Items[ModelOfCarsDropDownList.SelectedIndex];
string model = modelOfCar.Text;
foreach (RentCar c in frontEnd.GetListOfModels(stamp))
{
ListItem temp = new ListItem(c.Color);
if (c.Model == model)
ColorOfCarsDropDownList.Items.Add(temp);
}
//UploadImage(stamp, model, ColorOfCarsDropDownList.Items[ColorOfCarsDropDownList.SelectedIndex].Text);
}
protected void StampOfCarsDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
ModelOfCarsDropDownList.Items.Clear();
ModelOfCarsDropDownList.SelectedIndex = 0;
ColorOfCarsDropDownList.Items.Clear();
ColorOfCarsDropDownList.SelectedIndex = 0;
ListItem stampOfCar = StampOfCarsDropDownList.Items[StampOfCarsDropDownList.SelectedIndex];
string stamp = stampOfCar.Text;
foreach (RentCar c in frontEnd.GetListOfModels(stamp))
{
ListItem temp = new ListItem(c.Model);
if (!ModelOfCarsDropDownList.Items.Contains(temp))
ModelOfCarsDropDownList.Items.Add(temp);
}
ListItem modelOfCar = ModelOfCarsDropDownList.Items[ModelOfCarsDropDownList.SelectedIndex];
string model = modelOfCar.Text;
foreach (RentCar c in frontEnd.GetListOfModels(stamp))
{
ListItem temp = new ListItem(c.Color);
if (c.Model == model)
ColorOfCarsDropDownList.Items.Add(temp);
}
// UploadImage(stamp, model, ColorOfCarsDropDownList.Items[ColorOfCarsDropDownList.SelectedIndex].Text);
}
//protected void UploadImage(string stamp, string model, string color)
//{
// byte[] fileBytes;
// foreach (RentCar c in frontEnd.GetListOfModels(stamp))
// {
// if ((c.Model == model) && (c.Stamp == stamp) && (c.Color == color))
// {
// fileBytes = (byte[])c.CarImage.ToArray();
// Stream msIn = new MemoryStream(fileBytes);
// msIn.Write(fileBytes, 0, fileBytes.Length);
// System.Drawing.Image im = System.Drawing.Image.FromStream(msIn);
// im.Save("C:/Users/Nickolay/Documents/Visual Studio 2010/Projects/RentCars/DynamicWebApplication/DBImages/CarImage" + c.Stamp + c.Model + c.Color + ".jpeg");
// carImage.ImageUrl = "DBImages/CarImage" + c.Stamp + c.Model + c.Color + ".jpeg";
// }
// }
//}
}
}
Я не понимаю, что здесь не так.Я использовал AutoPostBack.Если я выбираю пункт из ddl, я получаю пустые ddls.
Извините за мой вопрос.Я нашел решение своей проблемы.Это была маленькая вещь.Я забыл установить EnableViewState = "true" на главной странице :( Поэтому я получил пустые ddls, когда выбранные элементы (ddls не запускают события)