在网上看了很多,也不明白,不知道在什么时候禁用,不要跟我说页面回发的时候可以禁用掉,
都不明白什么叫页面回发,
还有人说GridView不能禁用viewstate ,我禁用了之后发现编辑,分页都可以用啊。
怎么判断页面回发??不要个你我解释什么是viewstate,我知道它是维护了控件的UI的状态。

解决方案 »

  1.   

    我个人认为,没有表单提交的,都可以禁用ViewState - -
    话说,禁用viewstate后还能用gridview内置的编辑功能?那gridview怎样得到编辑以前的值?
      

  2.   

    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
                DataSourceID="ObjectDataSource1" EnableViewState="False" OnDataBound="GridView1_DataBound" OnRowDataBound="GridView1_RowDataBound">
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
                    <asp:BoundField DataField="ClassId" HeaderText="ClassId" SortExpression="ClassId" />
                    <asp:TemplateField HeaderText="ImageName" SortExpression="ImageName">
                        <EditItemTemplate>
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ImageName") %>'></asp:TextBox>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("ImageName") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="JiShuPage" HeaderText="JiShuPage" SortExpression="JiShuPage" />
                    <asp:BoundField DataField="ClassMark" HeaderText="ClassMark" SortExpression="ClassMark" />
                    <asp:BoundField DataField="Liu1" HeaderText="Liu1" SortExpression="Liu1" />
                    <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
                    <asp:BoundField DataField="GuiChengPage" HeaderText="GuiChengPage" SortExpression="GuiChengPage" />
                    <asp:BoundField DataField="Liu2" HeaderText="Liu2" SortExpression="Liu2" />
                    <asp:BoundField DataField="IndexPage" HeaderText="IndexPage" SortExpression="IndexPage" />
                    <asp:BoundField DataField="ProductPage" HeaderText="ProductPage" SortExpression="ProductPage" />
                </Columns>
            </asp:GridView>
            <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="TST.Model.TestFrom"
                DeleteMethod="Delete" InsertMethod="Insert" SelectMethod="SelectAll" TypeName="TST.Bll.TestFromManager"
                UpdateMethod="Update"></asp:ObjectDataSource>
    自己看代码,我的数据源是一个对象,没在CS页面写一句话代码,编辑能够正常的编辑,我也想知道那gridview怎样得到编辑以前的值?
      

  3.   

    需要编辑的就不要禁用viewstate ,当页面只用浏览功能是禁用。
    你说禁用了viewstate 还能用GridView,显然是不行的。
      

  4.   

    到家难道没发现,这个该死的viewstate 影响了很大的网速,,我只想搞清楚到底在什么时候禁用掉这个东西,
    asp.net网站运行效率完全被这个东西搞死了,只建议在后台用下加快开发而已,牺牲性能了
      

  5.   

    我按照你的来做,是不能编辑的,你是不是在服务端设置了GridView的EnableViewState?
    viewstate 是很影响网速,所以能禁用的都应该禁用掉。
      

  6.   

    网站前台没有post的处理的情况下基本上可以禁用
      

  7.   

    input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
    value="/" /> 
    ViewState在客户端的保存形式,保存在一个ID为__VIEWSTATE的Hidden中,它的Value是使用Base64编码后的字符串。这个字符串实际上是一个对象序列化之后的结果。这个对象保存了整个页面的控件树的ViewState。可以使用一些工具将这个字符串进行解码查看其内容,比如ViewStateDecoder,ViewStateAnalyzer。 
    Page对客户端请求进行处理,在处理的过程中先是将客户端提交的_VIEWSTATE反序列化为对象,调用Control的相关方法给所有的控件装载数据,这些数据是上次请求结束后控件的状态数据。在请求结束之前调用Control的相关方法得到所有控件的被修改过的状态数据,之后Page将其进行序列化,并返回给客户端。在Control中又具体调用StateBag类的方法完成状态数据的加载和保存。 
      

  8.   

    http://topic.csdn.net/u/20091028/15/3c407098-df77-4a10-82d2-b6ca226ddd7f.html
    很精彩!
      

  9.   

     protected void Page_Init(object sender, EventArgs e)
        {
            this.DropDownList1.Items.Add(new ListItem("Init", "Init"));
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            
            this.DropDownList1.Items.Add(new ListItem("Load", "Load"));
        }
    大家看看这个,能预知一下执行的结果吗?放一个BUTTON上面去,看下刷新后和回传后有什么不同,,为什么
    Page_Init被执行了二次,但显示结果却是一个Init?是不是trackviewstate事件在Page_Init后执行了,
    并没有跟踪Page_Init的变化??高人指导,还是viewstate的问题,,,