OnSelectedIndexChanged 下拉列表没有页面刷新事件
OnSelectedIndexChanged Dropdown List without page refreshing event
我在我的下拉列表中使用脚本管理器 + 更新面板,因此当用户 select 有问题时,页面不会刷新(这是我的目标)。
这里是 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;
}
问题是,现在当我添加脚本管理器+更新面板(异步回发触发器)时,现在当我 select 从下拉列表中删除某些内容时,页面不会刷新,但标签也会不显示任何内容(当我从下拉菜单中选择 select 时它应该改变价格)。
我在这里做错了什么?有人可以帮我吗?
P.S。我刚刚检查了事件是否在用户 selects 时触发,是的,它触发了,但我似乎看不到该标签的内容(它没有打印在页面上) ...?
告诉更新面板在编辑后刷新,因为更新模式在您的标记中设置为条件。
UpdatePanel1.Update()
我在我的下拉列表中使用脚本管理器 + 更新面板,因此当用户 select 有问题时,页面不会刷新(这是我的目标)。
这里是 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;
}
问题是,现在当我添加脚本管理器+更新面板(异步回发触发器)时,现在当我 select 从下拉列表中删除某些内容时,页面不会刷新,但标签也会不显示任何内容(当我从下拉菜单中选择 select 时它应该改变价格)。
我在这里做错了什么?有人可以帮我吗?
P.S。我刚刚检查了事件是否在用户 selects 时触发,是的,它触发了,但我似乎看不到该标签的内容(它没有打印在页面上) ...?
告诉更新面板在编辑后刷新,因为更新模式在您的标记中设置为条件。
UpdatePanel1.Update()