Я пытаюсь написать генератор цитат. Для каждого продукта есть набор опций. Я хочу динамически добавлять выпадающий список для каждого параметра, а затем все события SelectedIndexChanged подключаются для обновления стоимости котировки.Как я могу программно добавить триггеры в ASP.NET UpdatePanel?
У меня нет никаких проблем с добавлением элементов управления DropDownList в мою UpdatePanel, но я не могу подключить события.
После загрузки страницы выпадающие списки с их данными, но их изменение не вызывает обработчик события SelectedIndexChanged и обновление QuoteUpdatePanel. у меня есть что-то вроде этого:
Edit: С programmatically adding AsyncPostBackTrigger controls is not supported, Я изменить свой код, но я до сих пор не получить событие:
Edit 2: Пробовал добавив PlaceHolder чтобы добавить выпадающий список, чтобы (вместо непосредственно в ContentTemplateContainer, до сих пор нет событий стрельбы.
QuotePanel.ASCX
<asp:ScriptManager ID="ScriptManager" runat="server" />
<asp:UpdatePanel ID="QuoteUpdatePanel" runat="server" ChildrenAsTriggers="true">
<ContentTemplate>
Cost: <asp:Label ID="QuoteCostLabel" runat="server" />
<fieldset id="standard-options">
<legend>Standard Options</legend>
<asp:UpdatePanel ID="StandardOptionsUpdatePanel" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
<ContentTemplate>
<asp:PlaceHolder ID="StandardOptionsPlaceHolder" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
</fieldset>
</ContentTemplate>
</asp:UpdatePanel>
Код для добавления выпадающих и события они должны быть провод для:
protected void PopluateUpdatePanel(IEnumerable<IQuoteProperty> standardOptions)
{
foreach (IQuoteProperty standardOp in standardOptions)
{
QuotePropertyDropDownList<IQuoteProperty> dropDownList = new QuotePropertyDropDownList<IQuoteProperty>(standardOp);
dropDownList.SelectedIndexChanged += QuotePropertyDropDown_SelectedIndexChanged;
dropDownList.ID = standardOp.GetType().Name + "DropDownList";
dropDownList.CssClass = "quote-property-dropdownlist";
Label propertyLabel = new Label() {Text = standardOp.Title, CssClass = "quote-property-label"};
StandardOptionsPlaceHolder.Controls.Add(propertyLabel);
StandardOptionsPlaceHolder.Controls.Add(dropDownList);
_standardOptionsDropDownLists.Add(dropDownList);
ScriptManager.RegisterAsyncPostBackControl(dropDownList);
}
}
void QuotePropertyDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
QuoteCostLabel.Text = QuoteCost.ToString();
StandardOptionsUpdatePanel.Update();
}
Dang! Нет ввода? – scottm