不可见列的ASP.NET GridView数据是否存储在viewstate中?

不可见列的ASP.NET GridView数据是否存储在viewstate中?,asp.net,sql-server,select,gridview,Asp.net,Sql Server,Select,Gridview,如果我从MS-SQL表中查询并选择*,并且只显示少数数据列(其余列不可见或不存在),发送到GridView的查询结果是否包含所有未使用的列的数据,或者GridView仅发送将要显示的数据。如果发送了所有数据,则是仅将这些数据存储在ViewState中,还是存储了所有数据 谢谢。你的问题有点模棱两可。您的意思是,如果不显示或定义数据集中包含的列,ViewState的大小是否仍会增加,就像它们被显示一样?如果这就是你要问的,那么答案是否定的。例如,你可以有一个数据表,有100列,但是如果你在Grid

如果我从MS-SQL表中查询
并选择*
,并且只显示少数数据列(其余列不可见或不存在),发送到GridView的查询结果是否包含所有未使用的列的数据,或者GridView仅发送将要显示的数据。如果发送了所有数据,则是仅将这些数据存储在ViewState中,还是存储了所有数据
谢谢。

你的问题有点模棱两可。您的意思是,如果不显示或定义数据集中包含的列,
ViewState
的大小是否仍会增加,就像它们被显示一样?如果这就是你要问的,那么答案是否定的。例如,你可以有一个数据表,有100列,但是如果你在GridView中只显示其中的一列,那么视图状态的大小将与你的数据表只包含那一列的大小相同。

是。所有列都可用于GridView进行显示。现在要看你是想展示一些还是全部。在GridView上设置
AutoGenerateColumns=“true”
时,这一点很明显

GridView是一个表示对象,抽象/提取底层数据源中的信息,例如

<asp:GridView runat="server" DataKeyNames="ProductID" ID="GridView1">
<Columns>
    <asp:BoundColumn HeaderText="Product Name" DataField="ProductName" />
    <asp:BoundColumn HeaderText="Price" DataField="Price" />
</Columns>
</asp:GridView>


从上面的例子来看,
ProductName
Price
显示在GridView中,但是您的数据源中的一些其他列是可用的,例如用于
DataKeyNames

ProductID
是的,我的意思正是您的第二句话所说的。您完全正确,数据是可用的。您的意思是(未使用/未显示的)数据无论是否显示都会发送给用户?这与上面的@Aquinas答案相反。是的,数据已发送。这并不是相反,只是从另一个角度来看——视图状态。如果不在GridView中显示,则它不是ViewState的一部分。ViewState包含有关页面中显示的所有控件及其状态的信息,以便在回发时检索相同的信息以重新显示页面。您可以在会话、Cookie中有一些数据,用户可以使用这些数据,但这并不意味着它们处于ViewState中