SilverLight触发器加Command命令实现一对多级联查询

先来看看SilverLight触发器加Command命令能实现什么样的功能呢

如下是两个datagrid点击上面的其中一行 下面的datagrid就会根据上面的编号 对应查出详细信息

2011033114435459.jpg

点击第二条数据时:

2011033114443314.jpg

好下面我们看看 怎么用触发器和Command命令来实现这样的功能

xaml代码

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
< Grid x:Name ="LayoutRoot" Background ="White" >
< Grid.RowDefinitions >
< RowDefinition Height ="330*" ></ RowDefinition >
< RowDefinition Height ="470*" ></ RowDefinition >
</ Grid.RowDefinitions >
< Grid Grid.Row ="0" >
< Grid.RowDefinitions >
< RowDefinition Height ="30" ></ RowDefinition >
< RowDefinition Height ="270*" ></ RowDefinition >
< RowDefinition Height ="20" ></ RowDefinition >
</ Grid.RowDefinitions >
< TextBlock FontSize ="14" Margin ="5" Grid.Row ="0" > 库存总账条目: </ TextBlock >
< data:DataGrid x:Name ="dglist" Grid.Row ="1" Margin ="5,0,5,0" GridLinesVisibility ="All"
AutoGenerateColumns
="False"
FrozenColumnCount
="1"
AreRowDetailsFrozen
="True"
HorizontalAlignment
="Stretch" CanUserSortColumns ="False"
ItemsSource
=" {Binding InvStockLedgerModelList,Mode=TwoWay} "
IsReadOnly
="True" SelectedItem =" {Binding InvStockLedgerModel,Mode=TwoWay} " >

< data:DataGrid.Columns >
< data:DataGridTextColumn Header ="物料名称" Binding =" {Binding MaterialModel.Mat_Name,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="会计年度" Binding =" {Binding StockLedger_Year,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="会计期间" Binding =" {Binding StockLedger_Period,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="期初库存数量" Binding =" {Binding StockLedger_BAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="期初库存金额" Binding =" {Binding StockLedger_BMoney,Mode=TwoWay} " Width ="100" />
< data:DataGridTextColumn Header ="收入数量" Binding =" {Binding StockLedger_IAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="收入金额" Binding =" {Binding StockLedger_IMoney,Mode=TwoWay} " Width ="100" />
< data:DataGridTextColumn Header ="发出数量" Binding =" {Binding StockLedger_OAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="发出金额" Binding =" {Binding StockLedger_OMoney,Mode=TwoWay} " Width ="100" />
< data:DataGridTextColumn Header ="期末数量" Binding =" {Binding StockLedger_EndAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="期末金额" Binding =" {Binding StockLedger_EndMoney,Mode=TwoWay} " Width ="100" />
</ data:DataGrid.Columns >
<!-- 内置一个触发器
当datagrid触发SelectionChanged事件后执行Command命令
Command绑定了DataGridSelectionCommand命令
传出的对象为datagrid的SelectedItem
数据来源于dglist和datagrid的名字相同
-->
< i:Interaction.Triggers >
< i:EventTrigger EventName ="SelectionChanged" >
< i:InvokeCommandAction Command =" {Binding DataGridSelectionCommand} " CommandParameter =" {Binding SelectedItem,ElementName=dglist} " />
</ i:EventTrigger >
</ i:Interaction.Triggers >
</ data:DataGrid >

< Border Grid.Row ="2" BorderThickness ="1,0,1,1" BorderBrush ="#6c7175" Margin ="5,0,5,0" >
< Grid x:Name ="gridFooter" HorizontalAlignment ="Stretch" VerticalAlignment ="Top" >
< Grid.ColumnDefinitions >
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
</ Grid.ColumnDefinitions >
< sdk:Label Content ="合 计:" FontSize ="13" />
< sdk:Label Grid.Column ="3" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_BAmount" />
< sdk:Label Grid.Column ="4" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_BMoney" />
< sdk:Label Grid.Column ="5" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_IAmount" />
< sdk:Label Grid.Column ="6" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_IMoney" />
< sdk:Label Grid.Column ="7" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_OAmount" />
< sdk:Label Grid.Column ="8" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_OMoney" />
< sdk:Label Grid.Column ="9" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_EndAmount" />
< sdk:Label Grid.Column ="10" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockLedger_EndMoney" />
</ Grid >
</ Border >
</ Grid >
< Grid Grid.Row ="1" >
< Grid.RowDefinitions >
< RowDefinition Height ="30" ></ RowDefinition >
< RowDefinition Height ="410*" ></ RowDefinition >
< RowDefinition Height ="20" ></ RowDefinition >
</ Grid.RowDefinitions >
< TextBlock FontSize ="14" Margin ="5" Grid.Row ="0" > 总账明细: </ TextBlock >
< data:DataGrid x:Name ="gridList" Grid.Row ="1" Margin ="5,0,5,0" GridLinesVisibility ="All"
AutoGenerateColumns
="False"
FrozenColumnCount
="1"
AreRowDetailsFrozen
="True"
HorizontalAlignment
="Stretch" CanUserSortColumns ="False"
ItemsSource
=" {Binding InvStockListModelList,Mode=TwoWay} "
IsReadOnly
="True" SelectedItem =" {Binding InvStockListModel,Mode=TwoWay} " >

< data:DataGrid.Columns >
< data:DataGridTextColumn Header ="物料名称" Binding =" {Binding MaterialModel.Mat_Name,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="仓库名称" Binding =" {Binding StorgeModel.Storge_Name,Mode=TwoWay} " />

< data:DataGridTextColumn Header ="库位名称" Binding =" {Binding InvLocationModel.Location_Name,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="批号" Binding =" {Binding StockList_Batch,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="年度" Binding =" {Binding StockList_Year,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="会计期间" Binding =" {Binding StockList_Period,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="收入数量" Binding =" {Binding StockList_IAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="收入单价" Binding =" {Binding StockList_IPrice,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="收入金额" Binding =" {Binding StockList_IMoney,Mode=TwoWay} " Width ="100" />
< data:DataGridTextColumn Header ="发出数量" Binding =" {Binding StockList_OAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="发出单价" Binding =" {Binding StockList_OPrice,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="发出金额" Binding =" {Binding StockList_OMoney,Mode=TwoWay} " Width ="100" />
< data:DataGridTextColumn Header ="期末数量" Binding =" {Binding StockList_EndAmount,Mode=TwoWay} " />
< data:DataGridTextColumn Header ="期末金额" Binding =" {Binding StockList_EndMoney,Mode=TwoWay} " Width ="100" />
< data:DataGridTextColumn Header ="供应商批号" Binding =" {Binding StockList_SuppBatch,Mode=TwoWay} " />
</ data:DataGrid.Columns >
</ data:DataGrid >
< Border Grid.Row ="2" BorderThickness ="1,0,1,1" BorderBrush ="#6c7175" Margin ="5,0,5,0" >
< Grid x:Name ="gridFooterList" HorizontalAlignment ="Stretch" Grid.Row ="2" VerticalAlignment ="Top" Margin ="5,0,5,0" >
< Grid.ColumnDefinitions >
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
< ColumnDefinition Width ="*" />
</ Grid.ColumnDefinitions >
< sdk:Label Content ="合 计:" FontSize ="13" />
< sdk:Label Grid.Column ="6" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockList_IAmount" />
< sdk:Label Grid.Column ="8" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockList_IMoney" />
< sdk:Label Grid.Column ="9" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockList_OAmount" />
< sdk:Label Grid.Column ="11" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockList_OMoney" />
< sdk:Label Grid.Column ="12" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockList_EndAmount" />
< sdk:Label Grid.Column ="13" FontSize ="13" BorderThickness ="1,0,0,0" BorderBrush ="#6c7175" x:Name ="lblStockList_EndMoney" />
</ Grid >
</ Border >
</ Grid >
</ Grid >

cs代码:

注意:代码里面的属性列表集合及实体对象都要继承于INotifyPropertyChanged

当属性改变事要通知到界面上来。。。。

ContractedBlock.gif ExpandedBlockStart.gif View Code
 
   
// 声明Command命令

public ICommand DataGridSelectionCommand { protected set ; get ; }

// 在构造函数里面Command命令执行

DataGridSelectionCommand
= new DelegateCommand(DoDataGridSelectionCommand);

// 实现Command命令

void DoDataGridSelectionCommand( object param)
{
if (param == null ) return ;
InvStockLedgerModel
= (InvStockLedgerModel)param;

// 根据界面数据 从数据库中详细表中的数据
InvStockListModelList = GetPostData < IList < InvStockListModel >> (InvStockLedgerModel);
GetStockListSum();

            

大功告成!!!

转载于:https://www.cnblogs.com/lukun/archive/2011/03/31/2001026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值