我使用下拉列表选择客户,我需要删除我在图片中显示的setTimeout,我不知道从哪里删除它..可以任何一个建议我从它加载的地方...我的浏览器单独显示<select .. >
,我需要知道它从哪里加载..
<td><asp:DropDownList Width="180px" CssClass="select_quo_one" ID="ReceiverDropDown"
runat="server" AutoPostBack="true"
OnSelectedIndexChanged="ReceiverDropDown_SelectedIndexChanged">
</asp:DropDownList>
</td>
我的浏览器代码:
答案 0 :(得分:0)
由于AutoPostBack设置为true,因此DropDownList控件会自动生成setTimeout。
来自http://msdn.microsoft.com/en-us/library/system.web.ui.postbackoptions.autopostback(v=vs.110).aspx
JavaScript setTimeout方法与_doPostBack方法一起使用,以确保用户操作在回发发生之前完成。
修改强> &#34;闪烁发生在我的页面中,所以我必须删除setTimeout值.. - 用户3595072 17分钟前&#34;
setTimeout本身不会(直接)导致页面闪烁。闪烁是因为DropDownList每次更改时都会进行回发bc AutoPostBack设置为true,这会导致页面刷新。如果您在选择客户后立即执行任何服务器端操作(例如在页面上加载其他客户信息),则只需将AutoPostBack设置为false即可。否则,您可以考虑在页面上使用UpdatePanel,或使用类似AJAX调用的方式在没有完整回发的情况下进行处理。
编辑2:
由于您只是在AutoPostBack事件中添加了javascript,因此可以通过将以下内容添加到ASPX页面来添加jQuery引用(如果您还没有):
<script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
然后设置AutoPostBack =&#34; false&#34;在你的DropDownList上添加这个javascript来完成你的AutoPostBack正在做的事情:
<script type="text/javascript">
$(function () {
$('#<%=ReceiverDropDown.ClientID %>').on('change', function (e) {
var benId = $(this).val();
if (benId != '' && benId != '0') {
AddDetails(benId);
}
});
});
</script>
答案 1 :(得分:0)
对我来说,你有几个选择 -
1)删除AutoPostBack - 这将停止SelectedIndexChanged事件触发,但由于您似乎只是弹出警报,您可能可能会重新创建此客户端。
2)将DropDownList放在UpdatePanel中,如您在其他问题中所解释的那样,您可能需要进行一些调试才能使其正常工作,但应该按照您的意愿进行操作。
3)接受页面重新加载 - 接受这是使用Web表单时的权衡,并保持原样。
4)转移到没有Postback模型的MVC。
听起来您可能需要阅读Web表单并查看优点和缺点,并在您尝试对抗框架时做出明智的决定,而不是使用它。