2017-10-15 126 views
0

對於我的生活,我一直沒能找到這在任何地方(不是使用TableAdapter的是排除其他的解決方案....添加參數預定義的查詢到datagridview的

我有一個簡單的設置,我有一個datagridview,我有一個綁定到datagridview的tableadapter,這一切都很奇妙,但帶來了整個表。在tableadapter本身上,我創建了一個名爲「nonServers」的查詢,它返回我想要的數據。

所以我的問題是,我怎樣才能將tableadapter的QUERY的結果綁定到datagridview,而不是完整的結果?當我嘗試添加查詢時,它會添加一個頂部按鈕來觸發查詢(因爲它的意思是)但是,這個我不是我想要的 - 我希望初始值只是查詢的結果。

任何幫助表示讚賞,我認爲它可能是embarassingly簡單

回答

0

你被一些誤解。首先,您的網格不綁定到表格適配器。適配器只是在數據庫和應用程序之間來回移動數據的一種手段。數據存儲在作爲DataSet的一部分的應用程序a DataTable中。這就是你的網格必然會發生的事情。

每個表格適配器的默認查詢是SELECT *而沒有WHERE子句,因此所有列和所有行。表適配器有兩種方法 - FillGetData - 執行該查詢。 Fill將填充現有的DataTable,這可能是DataSet的一部分,而GetData將創建並返回一個新的獨立的DataTable

當您添加一個帶有WHERE子句的新查詢以進行篩選時,系統會提示您命名將執行該查詢的新方法。默認情況下,它們被命名爲FillByGetDataBy,並且您應該爲其添加一個有意義的後綴。如果您要過濾ParentId列,那麼您會將方法命名爲FillByParentIdGetDataByParentId。我不確定您的查詢是什麼樣子,但您可以使用FillWithNonServersGetDataWithNonSevers

如果拖動從數據源窗口的表格到您的窗體,然後將增加一堆默認控件和組件,它也將產生一些代碼,包括相應的表格適配器的Fill方法的調用Load事件處理程序。在你的情況下,你只需要將這個Fill調用更改爲對新方法的調用,然後它將調用您的自定義查詢而不是默認值。

相關問題