【发布时间】:2014-06-09 15:54:09
【问题描述】:
目前我在 asp:repeater 中有一个下拉列表。下拉列表有两个不同的事件。
DataBinding 和 SelectedIndexChanged。但是 SelectedIndexChanged 无论如何都不会触发。
这是我的 ASP 代码:
<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Repeater runat="server" ID="_repArticles">
<ItemTemplate>
<tr>
<td>
<img width="130" height="100" src='<%# Eval("ImageFilePath") %>' />
</td>
<td>
<%# Eval("Price") %>
</td>
<td>
<asp:DropDownList AutoPostBack="true" runat="server" ID="_ddlQuantity" OnDataBinding="_ddlQuantity_DataBinding" OnSelectedIndexChanged="_ddlQuantity_SelectedIndexChanged"></asp:DropDownList>
</td>
<td>
<%# Eval("TotalPrice") %>
</td>
<td>
<asp:LinkButton runat="server" ID="_btnRemove" OnClick="_btnRemove_Click" CssClass="close" ToolTip='<%$ Resources: Resource, Remove %>' CommandArgument='<%# Eval("ProductId") %>' ForeColor="Transparent" BackColor="Transparent"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
这是我的 C# 代码:
protected void _ddlQuantity_DataBinding(object sender, EventArgs e)
{
var ddl = sender as DropDownList;
for (int i = 1; i < Convert.ToInt32(Eval("Stock")); i++)
ddl.Items.Add(new ListItem(i.ToString(), i.ToString()));
ddl.SelectedValue = Eval("Quantity").ToString();
}
protected void _ddlQuantity_SelectedIndexChanged(object sender, EventArgs e)
{
var ddl = sender as DropDownList;
this.MasterPage.UpdateCartItem(Convert.ToInt32(Eval("ProductId")), Convert.ToInt32(ddl.SelectedValue));
ddl.SelectedValue = Eval("Quantity").ToString();
}
我开始认为你不能同时使用这两个事件,有谁知道我做错了什么?
【问题讨论】:
-
你试过放断点吗?
-
是的,事件只是不会触发,数据绑定不会触发 selectedindexchanged 不会。项目也处于调试模式。
-
在 UpdatePanel 上更改 UpdateMode="Always" 有帮助吗?
-
尝试使用下拉列表的 ID 和事件设置异步回发触发器
-
确保您在过去时没有重新绑定 DDL。这将重置
SelectedIndexChanged事件。