我對VB.net和WPF(以及一般編程)相當陌生,所以請耐心等待。我試圖爲我的企業編寫一個有用的數據庫應用程序作爲學習項目。我在WinForms中做了一個草稿,指的是(非常好的)Murach書,但我現在試圖用WPF UI和更乾淨的代碼重新編寫它。有沒有簡單的方法綁定到WPF中的父行?
我想我理解WPF綁定的基礎知識,但是我正試圖找到一種簡單的綁定父母細節的方式 - 我會認爲這是一個非常基本的方案,但我找不到任何東西在上面。例如,假設我有
- a'客戶'表與客戶ID,名稱,各種聯繫人詳細信息,然後是外鍵CityID和GroupID;
- 具有CityID,CityName和外鍵StateID的'City'表;
- 帶狀態ID,狀態名的'狀態'表;
- 一個「組」表與組ID,組名等
...有一個強類型數據集,包括關係和一堆的TableAdapter的。
在這種情況下,我想要做的就是顯示特定客戶的詳細信息(當用戶輸入其CustomerID時)。我可以很容易地綁定到'Customers'表中的數據,但是如何使用綁定從相關表中檢索CityName,StateName和GroupName?下面是一個部分示例。
...
<Window.Resources>
<CollectionViewSource x:Key="CustomersViewSource"
Source="{Binding Path=Customers,Source={StaticResource CustomersDataSet}}" />
</Window.Resources>
<Grid DataContext="{Binding Source={StaticResource CustomersViewSource}}">
<TextBox Name="customerName" Text="{Binding Path=Name}" />
<TextBox Name="customerPhone" Text="{Binding Path=PhoneNumber}" />
</Grid>
<Grid>
<Label Name="lblGroup" Content="[needs to bind to GroupName]">
<Label Name="lblCity" Content="[needs to bind to CityName]">
</Grid>
我已經上設置主/從場景,這是簡單的讀條,這樣我就可以綁定到客戶一個DataGrid的選擇的城市,例如,通過使用外鍵作爲客戶控制的綁定路徑。在這裏,我試圖以另一種方式做到這一點,但是,根據選定的客戶查找父級詳細信息。任何人都可以將我推向正確的方向嗎?
如果沒有這個,我只能通過VB來做到這一點 - 它很討厭。假設我已經創建了一個CustomerViewSource並查閱了相關客戶,並在我的數據集填寫各種表格,這樣的事情:
Dim rowCustomer As System.Data.DataRowView = CustomerViewSource.View.CurrentItem
Dim drCustomer As System.Data.Datarow = rowCustomer.Row
Dim drGroup as drCustomer.GetParentRow("FK_Customers_Groups")
lblGroup.Content = drGroup.Item("GroupName")
我不應該這樣做,所以笨拙雖然.. 。 我是不是該?
還有一件事:目前我通過使用tableadapter上的參數化查詢填充數據集來選擇客戶,例如,
SELECT CustomerID, CustomerName
FROM Customers
WHERE CustomerID = @CustomerID
然後只是移動到第一個記錄(因爲將只有一個)。這是尋找客戶的常規方法嗎?我也可以使用這種方法,從我的客戶行中獲取外鍵,並使用參數化查詢填充數據集中的不同表格,然後分別綁定到每個表格 - 但又一次,看起來非常混亂。
任何有關這個問題的幫助,甚至一般的建議,非常感謝。如果我還不夠清楚(或提供了很好的例子),很高興進一步解釋。乾杯。
非常好,謝謝羅伯特,我根本不知道表達式,這正是我需要知道的。也許我應該退後一步,確保在我開始編程之前,我會更加深入地瞭解ADO.NET。是的,我知道哪些是與父母/孩子,可能只是沒有說得對。乾杯。 –