【问题标题】:why is my updatepanel generate hundreds of script block?为什么我的更新面板会生成数百个脚本块?
【发布时间】:2011-12-06 08:29:15
【问题描述】:

我有一个带有中继器的 asp.net 网络表单。在这个中继器中有多个控件,我通过 ItemCreated 事件影响这些控件的 javascript 函数。我用这种代码做了这个:

btnBareme.OnClientClick = string.Format("ChangeBareme('{0}','{1}',this); return false", item.Num_dossier, item.IdDemande);

javascript 函数“changeBareme()”在页面标题中定义。它工作正常,但我需要独立于页面的其他元素更新转发器。

所以我用 asp:UpdatePanel 围绕中继器。像这样的:

<asp:UpdatePanel ID="UpdatePnl2" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <div>
              <h1>Foo</h1>                                    
            </div>

            <div>
            <asp:Repeater runat="server" ID="rptFoo" OnItemCreated="rptFoo_ItemCreated" OnItemCommand="rpt_ItemCommand">
                <HeaderTemplate>
                    <table id="TabRep"  class="DataRepeater">
                        <thead>
                            <tr>                                    
                                <th></th>                                     
                            </tr>                                
                        </thead>
                        <tbody>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                       SomeContent Here with controls
                    </tr>                        
                </ItemTemplate>
                <FooterTemplate>
                </tbody>
                   </table>                                                     
                </FooterTemplate>                       
            </asp:Repeater> 
            <br/>                               
            </div>                                             
        </ContentTemplate>        
    </asp:UpdatePanel>

那里.. 它不会工作。更新面板外的页面控件失去了状态,在调试模式下,生成了数百个“脚本块”..

我的问题是我不太了解 updatepanels 如何处理内部的 javascript。所以我需要一些更有经验的人的建议。如何使此更新面板有效?数百个脚本块是什么?我需要使中继器与页面的其余部分更加“独立”..

提前致谢。

【问题讨论】:

  • “更新面板外的页面控件失去了它们的状态”是什么意思?你能说得更具体点吗?
  • 如果您希望您的应用程序是“独立的”,请摆脱 asp.net 控件并使用/编写自己的代码。我喜欢没有很多视图状态数据行的 .net 页面...
  • @Shadow 向导;在页面中(中继器之外)是一些复选框控件。更新更新面板后,所有复选框都未选中..
  • 如何准确地“更新”UpdatePanel?
  • @Shadow 向导;在转发器中是一个将转发器与另一个数据源重新绑定的控件。它是一个 ImageButton 进行 postBack。如果我做了一个 rptFoo.databind()

标签: c# javascript asp.net updatepanel


【解决方案1】:

这些脚本块在这里是因为每个按钮都有一个脚本块

<input type="button" onclick="changebareme.."/>

这里不是更新面板故障。

更好的方法是为每个按钮添加一个通用的 css 类。然后使用 javascript 选择所有按钮,并观察所有按钮的点击事件。

【讨论】:

  • 谢谢,我明白了。但是为什么在第一次加载页面时这些脚本块不存在?
  • 你的按钮有onclick属性吗?
  • 不在 asp 代码中。我在 ItemCreated 的转发器事件中设置了 OnclientClick
  • @bAN 你的问题已经解决了,我的解决方案很好吗?
  • 是的,以 css 类为目标不会产生这数百个脚本块。我不明白为什么它们在页面第一次加载时不存在,但是......(以及“丢失状态”问题是独立的。他也解决了)谢谢
猜你喜欢
  • 1970-01-01
  • 2016-02-27
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 2013-02-12
相关资源
最近更新 更多