Выпадающий список OnSelectedIndexChanged без события обновления страницы

Я использую диспетчер сценариев + панель обновления в своем раскрывающемся списке, поэтому, когда пользователь выбирает что-то из него, страница не обновляется (это моя цель).

Вот HTML-код:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
 <asp:ListView ID="listProducts" runat="server" DataKeyNames="ProductID" OnItemDataBound="listProducts_ItemDataBound" OnItemCommand="listProducts_ItemCommand">
            <ItemTemplate>
                 <div class="productoverlay">
                    <div class="col-lg-4 proizvod">
                         <div class="product">
                             <div class="glow"></div>
                             <img src='<%# "../productimg/" + Eval("FileName")%>'  alt='<%# Eval("ProductName") %>'/>
                        </div>
                    </div>
                     <div class="col-lg-1 price">
                         <asp:Label ID="lblPrice" runat="server" Text=""></asp:Label>
                     </div>
                     <div class="col-lg-7 pushtop">
                          <h1><%# Eval("ProductName") %></h1>

                         <p>Description: </p>
                         <p><%# Eval("ProductDescription") %></p>
                         <p>Quantity: </p><asp:TextBox ID="txtPackageQuantity" TextMode="Number" runat="server"></asp:TextBox>                        
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
                        <Triggers>
                            <asp:AsyncPostBackTrigger controlid="DropDownList1" eventname="SelectedIndexChanged" />
                        </Triggers>
                        <ContentTemplate>
                           <asp:DropDownList  ID="DropDownList1" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" runat="server"></asp:DropDownList> 
                        </ContentTemplate>
                    </asp:UpdatePanel>
                         <asp:Button ID="Button1" runat="server" Text="Add to cart"  CommandName="AddToCart" CommandArgument='<%# Eval("ProductID")%>'/>
                         </div>
                 </div>
            </ItemTemplate>
        </asp:ListView>     

А это код события OnSelectedIndexChanged:

 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var ddl = sender as DropDownList;
            var val = int.Parse(ddl.SelectedValue);
            rlsp_PrCategories_ByID_Result pr = ServiceClass.ProductCatByID(val);
            Label lblPrice = ddl.Parent.FindControl("lblPrice") as Label;
            if(pr!=null)
            lblPrice.Text = "$ " + pr.Price;
        }

Проблема в том, что теперь, когда я добавил диспетчер скриптов + панель обновления (триггер асинхронной обратной передачи), теперь, когда я выбираю что-то из выпадающего списка, страница не обновляется, но метка также ничего не показывает (она должна измениться цена, когда я выбираю что-то из выпадающего меню).

Что я здесь делаю неправильно? Кто-нибудь может мне помочь?

P.S. Я только что проверил, запускается ли событие сейчас, когда пользователь что-то выбирает, и да, оно запускается, но, похоже, я не могу видеть содержимое этой метки (она не распечатывается на странице)...?


person perkes456    schedule 18.04.2015    source источник
comment
Ничего... Я разобрался... Пришлось поставить метку и в панели обновлений...   -  person perkes456    schedule 18.04.2015
comment
Я не использую Updatepanels, но пробовали ли вы добавить: UpdatePanel1.Update() в конце обработчика selectedIndexChanged?   -  person Legends    schedule 18.04.2015


Ответы (1)


Скажите панели обновлений, чтобы она обновлялась после внесения изменений, потому что в вашей разметке для режима обновления задано условное значение.

 UpdatePanel1.Update() 
person Legends    schedule 18.04.2015