文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SilverLight触发器加Command命令实现一对多级联查询

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

时间:2011-03-31  来源:记忆逝去的青春

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

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

点击第二条数据时:

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

xaml代码

<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

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

//声明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();
            

大功告成!!!

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载