У меня возникли проблемы с получением кода, который я хочу сделать, и я был бы признателен за вашу помощь.OnSelectedIndexChanged не работает
То, что я хотел бы сделать, это:
Из текстового поля, добавить название продукта и создать объект с таким именем.
Товарный объект затем добавляется в словарь.
Затем я хочу связать этот словарь с выпадающим списком.
Если я изменяю выбранный элемент, я хочу отобразить номер выбранного продукта (по умолчанию как 0 при создании объекта продукта).
Проблема заключается в том, что при попытке изменить элемент в раскрывающемся списке ничего не происходит.
Thanx!
.aspx
<asp:TextBox ID="productText" runat="server"></asp:TextBox>
<asp:Button ID="newProductButton" runat="server" OnClick="newProduct_Click" />
<div>
<asp:DropDownList ID="ddlProducts" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlProducts_SelectedIndexChanged" >
</asp:DropDownList>
</div>
<asp:Label ID="productQuantity" runat="server"></asp:Label>
.aspx.cs
public partial class Pages_productPage : System.Web.UI.Page
{
string _productName = string.Empty;
public Dictionary<string, int> product
{
get
{
if (Page.Session["product"] == null)
{
Dictionary<string, int> product = new Dictionary<string, int>();
Page.Session["product"] = product;
}
return (Dictionary<string, int>)Page.Session["product"];
}
set
{
Page.Session["product"] = value;
}
}
protected string ProductName
{
get { return _productName; }
set { _productName = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//ddlProducts.Items.Insert(0, new ListItem("Products", "0"));
}
productLabel.Text = "Product name";
newProductButton.Text = "Add product";
ProductName = productText.Text;
}
public void newProduct_Click(object sender, EventArgs e)
{
Product prod = new Product(ProductName);
product.Add(prod.GetName(prod), prod.GetQuantity(prod));
BindDictionary();
}
private void BindDictionary()
{
dictonaryRepeater.DataSource = product;
dictonaryRepeater.DataBind();
ddlProducts.DataSource = product;
ddlProducts.DataValueField = "Value";
ddlProducts.DataTextField = "Key";
ddlProducts.DataBind();
//ddlProducts.Items.Insert(0, new ListItem("Products", "0"));
}
public void ddlProducts_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlProducts.DataValueField == "Banana")
{
productQuantity.Text = ddlProducts.SelectedItem.ToString();
productQuantity.Visible = true;
}
}
}
От * ничего не происходит * Вы имеете в виду, что обратной передачи не происходит? Отправка происходит, но ваш обработчик событий не срабатывает? Если вы используете точки останова, что попадается? –
Неужели он никогда не вводит метод, который вы определили, или он никогда ничего не делает? –
Он никогда не входит в метод ddlProducts_SelectedIndexChanged. – Andy