我有一个启用了autopostback的下拉列表。并有一个转发器,我从数据库填充复选框。
如果我将autopostback设置为true,那么在选择值时,复选框会丢失其值......
有关此问题的解决方法吗?
以下是代码:
<asp:DropDownList ID="dropdown" runat="server" class="pop" AutoPostBack="true" >
</asp:DropDownList>
<asp:Repeater ID="rptD" runat="server" >
<ItemTemplate>
<td valign="top" >
<input type="checkbox" class="al" />
</ItemTemplate>
</asp:Repeater>
答案 0 :(得分:4)
我认为这是因为你不仅仅是if(!IsPostBack)
而且还有回发的数据绑定转发器。因此,将检查已检查状态。
所以在Page_Load
(假设C#)中这样做:
if(!IsPostBack){
DataBindRepeater();
}
DataBindRepeater
是设置DataSource属性和DataBind
Repeater的方法。
您可能还想使用ASP.NET Checkbox control而不是html input type="checkbox"
。仅当检查状态是实现IPostBackDataHandler的服务器WebControl时才会重新加载。
答案 1 :(得分:1)
这听起来表明填充了Page_Load中的复选框。是这样的吗?如果您正在填充Page_Load中的控件,那么您将希望将其包装在条件:
中if (!IsPostBack)
{
// populate your controls from data
}
否则,每次回发都会重新填充它们。如果您有自动加载或单击按钮或在启动回发的页面上执行其他操作,则会在事件处理程序之前调用Page_Load。实际上,这种情况正在发生:
(侧面说明......请考虑使用AJAX进行动态客户端 - 服务器交互.Autopostback会导致糟糕的用户体验,而且您发现也会带来难以开发的体验。)