簡體   English   中英

回發后,telerik radgrid數據源為null

[英]telerik radgrid datasource null after postback

RadGrid.DataSource分配給回發后的Linq查詢后, DataSource為null。 在應用所有過濾器和排序之后,是否可以獲取RadGrid用來填充網格的數據?

編輯

僅有的可用於獲取數據的方法被標記為內部。 我想我現在要放棄。 如果以后找到解決方案,我將在此處發布答案。

這不是Telerik的事情。 對於所有控件,除非您在每次回發中明確地重新分配並重新綁定它,否則DataSource屬性將始終為null。

你可以使用Session或高速緩存,甚至喘氣的ViewState保留數據源身邊,但我會建議對任何。 理想情況下,你像排序和分頁格執行任何操作應導致再次訪問數據庫中的信息。

編輯:
究其原因,以避免存儲這種在會話或高速緩存信息是因為它是大的,並且每個用戶。 如果服務器上沒有無限的內存,則一定要在會話和緩存中為每個用戶的所有位置存儲數據集,但是在大多數情況下,您希望保持每個用戶的內存占用較小。

在ViewState中存儲此信息在很大程度上是浪費的,因為您只會向客戶顯示一小部分行,而是通過their腫的ViewState給他們提供巨大的下載量。

最后,需要注意在數據訪問級別處理分頁,排序和篩選,以便僅檢索要實際顯示給用戶的行。

Telerik的控件上具有NeedDataSource事件處理程序。 在此處設置數據源。

protected void radGridVesselSpecs_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
{
    if (this.Vessel == null)
        return;

    this.radGridVesselSpecs.DataSource = this.Vessel.Specifications;
}

您有兩種選擇,一種是將數據源對象存儲到會話中。 或者,您可以使用任何DataSource控件並在回發期間將其重新綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM