【发布时间】:2013-01-02 20:38:41
【问题描述】:
如果我从 MS-SQL 表中查询 select * 并仅显示少数数据列(其余列不可见或不存在),发送到 GridView 的查询结果是否包括所有未使用的列的数据或 GridView 仅发送将要显示的数据。如果发送了所有数据,那么是仅将这些数据存储在 ViewState 中还是存储所有数据
谢谢。
【问题讨论】:
标签: asp.net sql-server select gridview
如果我从 MS-SQL 表中查询 select * 并仅显示少数数据列(其余列不可见或不存在),发送到 GridView 的查询结果是否包括所有未使用的列的数据或 GridView 仅发送将要显示的数据。如果发送了所有数据,那么是仅将这些数据存储在 ViewState 中还是存储所有数据
谢谢。
【问题讨论】:
标签: asp.net sql-server select 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 中,但您的数据源中的一些其他列可用,例如ProductID 用于DataKeyNames
【讨论】:
你的问题有点模棱两可。您的意思是,如果您不显示或定义数据集中包含的列,ViewState 的大小是否仍会像显示时一样增加?如果这就是你要问的,那么答案是否定的。例如,您可以拥有一个包含 100 列的 DataTable,但如果您在 GridView 中仅显示其中 1 列,则 ViewState 的大小将与您的 DataTable 仅包含那一列相同。
【讨论】: