【问题标题】:Change of code in browser在浏览器中更改代码
【发布时间】:2014-05-13 21:36:48
【问题描述】:

我正在使用一个下拉列表来选择客户,我需要从中删除我在图像中显示的 setTimeout,我不知道从哪里删除它..任何人都可以建议我从哪里删除它加载..我的浏览器单独显示<select .. >,我需要知道它从哪里加载..

<td><asp:DropDownList Width="180px" CssClass="select_quo_one" ID="ReceiverDropDown" 
                            runat="server" AutoPostBack="true"
                            OnSelectedIndexChanged="ReceiverDropDown_SelectedIndexChanged">
                            </asp:DropDownList>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                        </td>

我的浏览器代码:

【问题讨论】:

  • 这是由 DropDownList 控件自动生成的,因为 AutoPostBack 设置为 true。为什么需要移除 setTimeout?
  • 我的页面出现闪烁,所以我必须删除 setTimeout 值..
  • setTimeout 与闪烁没有任何关系。闪烁是因为 DropDownList 每次更改时都会进行回发,因为 AutoPostBack 设置为 true,这会导致页面刷新。如果您在选择客户后没有立即在服务器端执行任何操作(例如在页面上加载其他客户信息),那么您可以将 AutoPostBack 设置为 false
  • 如果我将 Autopostback 设置为 false.. 我的下拉剂量有效..
  • 那么您需要发布更多代码来诊断问题。你是什​​么意思“我的下拉列表不起作用”?是否有错误,或项目未加载或什么?能贴一下页面加载方法和ReceiverDropDown_SelectedIndexChanged代码吗?

标签: c# javascript asp.net drop-down-menu


【解决方案1】:

在我看来你有几个选择 -

1) 删除 AutoPostBack - 这将停止 SelectedIndexChanged 事件触发,但由于您似乎只是弹出一个警报,您可能会重新创建此客户端。

2) 将 DropDownList 放在 UpdatePanel 中,如您在其他问题中向您解释的那样,您可能需要进行一些调试才能使其正常工作,但应该做您想做的事情。

3) 接受页面重新加载 - 接受这是使用 Web 表单时的权衡并保持原样。

4) 转移到没有 Postback 模型的 MVC 之类的东西。

听起来您可能需要对 Web 表单进行一些阅读并查看其优缺点并做出明智的决定,因为此时您正试图与框架抗争而不是使用它。

【讨论】:

    【解决方案2】:

    setTimeout 由 DropDownList 控件自动生成,因为 AutoPostBack 设置为 true。

    来自http://msdn.microsoft.com/en-us/library/system.web.ui.postbackoptions.autopostback(v=vs.110).aspx

    JavaScript setTimeout 方法与 _doPostBack 方法一起使用,以确保用户操作在回发发生之前完成。

    编辑: “我的页面出现闪烁,所以我必须删除 setTimeout 值.. – user3595072 17 分钟前”

    setTimeout 本身不会(直接)导致页面闪烁。闪烁是因为 DropDownList 每次更改时都会进行回发,因为 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>
    

    然后在你的 DropDownList 上设置 AutoPostBack="false" 并添加这个 javascript 来完成你的 AutoPostBack 正在做的同样的事情:

    <script type="text/javascript">
        $(function () {
            $('#<%=ReceiverDropDown.ClientID %>').on('change', function (e) {
                var benId = $(this).val();
                if (benId != '' && benId != '0') {
                    AddDetails(benId);
                }
            });
        });
    </script>
    

    【讨论】:

    • 你能试试我在上面列出的编辑#2中的建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2019-07-11
    • 2015-04-03
    • 1970-01-01
    • 2013-05-12
    • 1970-01-01
    相关资源
    最近更新 更多