WPF多表關聯資料繫結
Northwind資料庫的三個表之間依次有一對多關係:
Customers-Orders-Order Details
要想在TreeView上表現這種關係,就需要HierarchicalDataTemplate.
Customers-Orders-Order Details
要想在TreeView上表現這種關係,就需要HierarchicalDataTemplate.
<Grid>
<Grid.Resources>
<DataTemplate x:Key="detailTemplate">
<Grid>
<Grid.ColumnDefinitions> <ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding UnitPrice}" />
<TextBlock Grid.Column="1" Text="{Binding Quantity}" />
<TextBlock Grid.Column="2" Text="{Binding Discount}" />
</Grid>
</DataTemplate>
<HierarchicalDataTemplate x:Key="orderTemplate" ItemsSource="{Binding Orders2OrderDetails}" ItemTemplate ="{StaticResource detailTemplate}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{Binding Path=OrderID}" />
<TextBlock Grid.Column="1" Text="{Binding Path=OrderDate}" />
<TextBlock Grid.Column="2" Text="{Binding Path=RequiredDate}" />
<TextBlock Grid.Column="3" Text="{Binding Path=ShippedDate}" />
<TextBlock Grid.Column="4" Text="{Binding Path=Freight}" />
</Grid>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate x:Key="treeTemplate" ItemsSource="{Binding Customers2Orders}" ItemTemplate="{StaticResource orderTemplate}">
<TextBlock Text="{Binding CompanyName}" />
</HierarchicalDataTemplate>
</Grid.Resources>
<TreeView Grid.Column="0" Name="myTreeView" ItemsSource="{Binding}" ItemTemplate="{StaticResource treeTemplate}">
</TreeView>
</Grid>
---------------------------
.cs部分
public partial class Window1 : System.Windows.Window
{
public DataSet ds;
public Window1()
{
InitializeComponent();
ds = new DataSet();
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server=(local);database=northwind;uid=sa;pwd=";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
// Load Customers
SqlDataAdapter daCustomers = new SqlDataAdapter("select * from Customers",conn);
daCustomers.Fill(ds, "Customers");
// Load Orders
SqlDataAdapter daOrders = new SqlDataAdapter("select * from Orders", conn);
daOrders.Fill(ds, "Orders");
// Load OrderDetails
SqlDataAdapter daOrderDetails = new SqlDataAdapter("select * from [Order Details]", conn);
daOrderDetails.Fill(ds, "OrderDetails");
ds.Relations.Add("Customers2Orders", ds.Tables["Customers"].Columns["CustomerID"], ds.Tables["Orders"].Columns["CustomerID"]);
ds.Relations.Add("Orders2OrderDetails", ds.Tables["Orders"].Columns["OrderID"], ds.Tables["OrderDetails"].Columns["OrderID"]);
myTreeView.DataContext = ds.Tables["Customers"];
}
相關文章
- WPF/C#:資料繫結到方法C#
- sql 多表關聯刪除表資料SQL
- C#-WPF資料繫結基礎(一)C#
- 【翻譯】WPF中的資料繫結表示式
- wpf RelativeSource繫結
- WPF 資料繫結之ValidationRule資料校驗綜合Demo
- [WPF]資料繫結時為何會出現StringFormat失效ORM
- 在WPF中一種較好的繫結Enums資料方法
- C#WPF資料繫結模板化操作四步走C#
- 資料繫結
- JPA多表關聯查詢
- WPF 介面如何繫結Command
- WPF使用MVVM(二)-命令繫結MVVM
- 資料庫多對多表關係資料資料庫
- 資料結構——關聯容器資料結構
- 將WPF內部繫結的控制元件和資料拉取出來控制元件
- ORACLE多表關聯UPDATE語句Oracle
- MySQL關聯多表更新的操作MySql
- 多表關聯更新(mysql,oracle,postgreSQL)MySqlOracle
- WPF 基礎MvvM繫結的使用MVVM
- WPF使用MVVM(一)-屬性繫結MVVM
- 【轉載】WPF中TreeView控制元件資料繫結和後臺動態新增資料(一)View控制元件
- 第二講、Vue3.x繫結資料、繫結html、繫結屬性、迴圈資料VueHTML
- mysql資料庫多表同結構合併資料MySql資料庫
- WPF多表頭表格實現
- MyBatisPlus怎麼多表關聯查詢?MyBatis
- mysql中的多表關聯查詢MySql
- 如何做多表關聯查詢
- MySQL為什麼不要多表關聯?MySql
- SpringMVC資料繫結demoSpringMVC
- Angular | 理解資料繫結Angular
- Binding(一):資料繫結
- vue父子關係元件間的雙向資料繫結Vue元件
- WPF TreeView IsExpanded 繫結不上的問題View
- WPF控制元件:密碼框繫結MVVM控制元件密碼MVVM
- WPF之AvalonEdit實現MVVM雙向繫結MVVM
- Oracle\MS SQL Server Update多表關聯更新OracleSQLServer
- Python全棧Web(Flask框架、多表關聯)Python全棧WebFlask框架
- onethinkphp 如何做多表關聯查詢PHP