2014-09-24 23 views
0

使用Devexpress來使用網格開發WinForms應用程序。我不想在內存中加載網格的所有寄存器,而是隻有少數(10或15),但我找不到如何正確地做到這一點。我知道Devexpress顯示了一些方法來做到這一點,但我找不到任何工作的例子。嘗試通過服務器模式綁定gridview

Ps:我使用Oracle 11作爲數據庫。

在顯示使用LinqToSQL類此展示這些例子噹噹: https://documentation.devexpress.com/#WindowsForms/CustomDocument4057

但我做到這一點,它的工作原理,但並不如預期,becouse網格加載所有500只登記一次,一滾動條。

我想這一個,以及使用的EntityFramework服務器模式,但結果是一樣的上面: https://documentation.devexpress.com/#WPF/CustomDocument8601

我想知道我怎麼能頁顯示,我每想行數網格頁面,當我改變頁面時,數據庫被再次諮詢。

public partial class TestContext : DbContext 
{ 
    public TestContext() 
     : base("name=TestContext") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public DbSet<TestModel> TestModel{ get; set; } 
}                 

用的DevExpress GridView中的MainForm:

public Main() 
    { 
     InitializeComponent(); 
     entityServerModeSource1.QueryableSource = new TestContext().TestModel; 
    } 

感謝

的的DbContext類。

回答

2

恐怕您錯誤地理解了服務器模式的概念。服務器模式的主要思想是電網控制按需自動加載小部分數據。在這種模式下根本不需要「分頁」。例如。當網格開始時,它會加載並顯示數據存儲區中的第一部分數據以填充可見區域。然後,當最終用戶滾動網格時,當達到加載子集的最後一個記錄時,網格請求數據存儲返回後續數據部分。

但我這樣做,它的工作原理,但不是預期的,因爲網格加載所有500個寄存器,一個滾動條。

關於滾動條的行爲這意味着,電網將使用某種「佔位符」的卸載記錄當滾動條位置改變時會自動加載從數據源中的所有需要​​的數據和數據應該是真正顯示。這個過程可以是同步的或異步的。

請看Server Mode文章,瞭解基本的服務器模式概念。
請查看Regular Binding Mode vs Regular Server Mode vs Instant Feedback Mode以瞭解有關同步和異步數據綁定模式之間差異的更多信息。

P.S.您可以使用Data Source Configuration Wizard輕鬆地將網格控件綁定到任何數據,這大大簡化了將數據感知型DevExpress控件(例如GridControl或TreeList)綁定到數據源的過程。

+0

感謝您的回覆,這對我非常清楚。但是現在我明白了這個概念,我想確定何時以及數據庫在哪裏被調用。我無法弄清楚如何去做,我的意思是,在這個事件中不是指向斷點。 – gog 2014-09-24 14:48:19

+0

@ggui我不清楚爲什麼你需要知道這些信息,因爲XtraGrid是管理所有這些東西本身。無論如何,你可以使用專門的工具(SQL Profiler) – DmitryG 2014-09-24 15:07:27

+0

我明白你的觀點,但我想獲得生成的查詢,因爲在其他情況下需要使用其中的一些查詢。 – gog 2014-09-24 16:14:42

相關問題