使用 JavaScript 出现在控件之后/下方的控件的 ViewState 丢失

Posted

技术标签:

【中文标题】使用 JavaScript 出现在控件之后/下方的控件的 ViewState 丢失【英文标题】:ViewState lost for controls which appear after/below a control with JavaScript 【发布时间】:2017-06-12 04:56:26 【问题描述】:

我希望我能正确解释这一点。

我在 ASP.net (3.5) 中有一个包含 GridView 的页面。我已经实现了 jquery 来冻结 GridView 的列和标题(我实现的 jquery 可以在这里找到:http://gridviewscroll.aspcity.idv.tw/)。

现在,令人沮丧的部分。我放置在页面上的任何控件,在 GridView 上方都会在回发时保持视图状态。 GridView 后面的任何控件在回发时都会丢失视图状态。

<asp:TextBox ID="tbx_Value1" runat="server" />
<asp:TextBox ID="tbx_Value2" runat="server" />
<asp:GridView ID="gv_Data" runat="server" />
<asp:TextBox ID="tbx_Value3" runat="server" />

因此,在回发时,tbx_Value1、tbx_Value2 和 GridView 的视图状态被保留,但 tbx_ValueValue3 的视图状态丢失。设置EnableViewState="true" 并没有改善这种情况。

JQuery 下载在以下 javascript 中调用:

<script type="text/javascript">
    var c = 0;
    c = '<%=this.col %>';

    $(document).ready(function() 

        gridviewScroll(c);
    );

    function gridviewScroll(c) 

        $('#<%=gv_Data.ClientID%>').gridviewScroll(
            width: 1350,
            height: 330,
            freezesize: c,
            arrowsize: 30,
            varrowtopimg: "../../../images/arrowvt.png",
            varrowbottomimg: "../../../images/arrowvb.png",
            harrowleftimg: "../../../images/arrowhl.png",
            harrowrightimg: "../../../images/arrowhr.png",
            headerrowcount: 1
        );
     
</script>

我不知道如何解决这个问题。我已经移动了我的控件,重新创建了页面,重新构建了应用程序。所有这些都返回相同的结果。所以,我只能假设它与 javascript(或我正在使用的 jquery 下载)有关。也许在页面生命周期中应用它? Javascript/jquery 不是我的强项,因此我们将不胜感激。

谢谢。

【问题讨论】:

你所说的 Java 是指 JavaScript 吗?请具体。 是的。这是我链接到的 jquery 和我在帖子中定位的 javascript。 检查 jQuery 是否将 input 字段移到 &lt;/form&gt; 标记之外。最近有一个similar issue,其中一个模态弹出窗口将一个 GridView 放置在表单之外。 谢谢 VDWWD。我会看看的。 不幸的是,我没有看到任何暗示输入字段已被移动的内容。 【参考方案1】:

我找到了这个查询的罪魁祸首。这种情况下的 Gridview 是根据用户输入动态创建的。我没有想到任何人会要求或需要一个非常大的 GridView。然而,当他们这样做时,这个 Gridview 的本质就是它的本质,导致创建了很多控件。

当我意识到发生这种情况后,我将 web.config appSettings 键:“aspnet:MaxHttpCollectionKeys”更新为更大的数字,但也限制了用户可以请求的大小。

我通过这篇文章得出了这个解决方案: 'Operation is not valid due to the current state of the object' error during postback

【讨论】:

以上是关于使用 JavaScript 出现在控件之后/下方的控件的 ViewState 丢失的主要内容,如果未能解决你的问题,请参考以下文章

Flexslider 隐藏幻灯片下方的项目符号

ASP.Net、JavaScript 中 GridView 上的线条

媒体控件栏在 VideoView Android 中出现一秒钟后消失

百度地图之控件使用

如何在面板上预览顶部停靠控件下方插入顶部停靠控件

响应式网页设计栏出现在下方