2013-01-19 85 views
0

如果我從MS-SQL表中查詢select *並且只顯示少量數據列(其餘列不可見或不存在),那麼發送到GridView的查詢結果是否包含所有未使用的列數據或GridView只發送將要顯示的數據。如果發送所有數據,那麼只有這些數據將被存儲在ViewState中還是所有數據都被存儲。 謝謝。不可見列的ASP.NET GridView數據是否存儲在viewstate中?

回答

1

是的。所有列都可用於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> 

從上面的例子中,ProductNamePrice示在GridView但是從你的數據源的一些其它列可用例如ProductID用於DataKeyNames

+1

數據可用,您絕對正確。你的意思是(未使用/未顯示的)數據是否發送給用戶,無論他們是否顯示?這與@Aquinas上面的答案相反。 – user776676

+2

是的數據發送。這不是相反的,只是從另一個角度 - ViewState。當你不在GridView中顯示它時,它不是ViewState的一部分。 ViewState包含有關在您的頁面中顯示的所有控件及其狀態的信息,以便在您回傳時,檢索相同的信息以重新顯示您的頁面。您可以在Session,Cookie中擁有一些數據,並且對用戶可用,這並不意味着它們在ViewState中 – codingbiz

1

你的問題有些含糊。您的意思是,如果您沒有顯示或定義數據集中包含的列,那麼ViewState的大小是否仍會像顯示一樣增加?如果這就是你要求的,那麼答案是否定的。例如,您可以使用100列的DataTable,但如果您只在GridView中顯示其中一列,那麼ViewState的大小將與您的DataTable僅包含一列的大小相同。

+0

是的,我的意思是你的第二句話的確切內容。 – user776676

相關問題