2013-08-19 55 views
0

我在SQL Server中有一個存儲過程,它根據參數返回不同的結構。如何顯示來自存儲過程的結果WinForms

換句話說,它可能會返回帶有三個字段或15的結果集,並且列名將會不同。

如何在WinForm應用程序中顯示這些結果?

我目前使用實體框架來訪問數據,但顯然這不會在這種情況下工作。

數據將只讀,即不需要編輯。只需要顯示它。

我猜測我需要跳過EF並直接調用SP,然後用自動列填充DataGridView。

Greg

+0

這是一個可怕的數據庫設計 - 對於一個給定存儲過程的結果集的結構應該是穩定的** **和** **固定。根據輸入參數改變它的形狀使得真的很難使用這個程序....我會在其他任何東西之前解決這個設計缺陷。 –

+0

如果你有一個SP,那就沒有真正的需要使用EF,只需使用ADO.NET([SqlCommand](http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx)等)並直接調用存儲過程。 –

回答

0

由於您正在檢索動態數據結構,因此您還需要使網格列變爲動態。我要做的是在成功檢索結果集後,清除Columns集合,並在每次調用SP時重新創建它們,並且需要在屏幕上刷新數據。不要使用AutoGenerateColumns,因爲它們幾乎沒有機會自定義它們的外觀,而是自己定義每一列,以便您可以選擇要顯示的內容和方式。

+0

在這種情況下,我處於存儲過程作者的擺佈之中,所以我無法預先知道哪些數據會返回,因此我無法提前創建列。無論如何,接受的答案都能很好地解決這個問題。 –

+0

似乎不是一個好的選擇(儘管它確實有效),因爲它沒有任何機會優化用戶最終數據的視覺外觀。自動生成將始終有效,但問題是您無法進行任何格式化,對齊,可讀的標題或任何您想要的視覺效果。即使你完全不控制SP,至少我認爲你應該知道每個參數組合的結果,所以你可以爲你的最終用戶相應地佈置你的UI,因爲他們毫無疑問不喜歡原始數據庫數據。 – Alejandro

相關問題