hello

silverlight 遍历datagrid行的数据

silverlight遍历datagrid,从而获取datagrid中模板列里的控件对象,选中所有行或者做其他操作。

刚开始就找到了一个遍历的方法,如下代码:

  foreach (object obj in dg.ItemsSource)
                    {
                        CheckBox cb1 = dg.Columns[0].GetCellContent(obj).FindName("ck") as CheckBox;
                        cb1.IsChecked = true;
                    }

其中dg为DataGrid的name值,这样成功了,获取到了每一行的控件,但是一旦datagrid数据多的时候,datagrid自带的滚动条出现了,这时候遍历就出现问题了,只能遍历到页面上呈现的数据行里的控件;而页面不呈现的数据行的控件和数据却取不到。网上查了下,发现如下解决方法。

解决办法:禁用掉datagrid自己的滚动条,在datagrid控件外面加一个滚动条的控件,就可以了,代码如下:

  <ScrollViewer Grid.Row="3" VerticalScrollBarVisibility="Auto" Margin="5,5,5,5" HorizontalScrollBarVisibility="Disabled" Height="auto" BorderBrush="#FFFDFAF8">
                    <sdk:DataGrid  Name="SeriesValueDataGrid" Margin="0"
                              RowDetailsVisibilityMode="VisibleWhenSelected"  VerticalScrollBarVisibility="Disabled"
                              AutoGenerateColumns="False">
                        <sdk:DataGrid.Columns>
                            <sdk:DataGridTemplateColumn Header="Include">
                                <sdk:DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                                            <CheckBox IsChecked="True" Name="ck"></CheckBox>
                                        </StackPanel>
                                    </DataTemplate>
                                </sdk:DataGridTemplateColumn.CellTemplate>
                            </sdk:DataGridTemplateColumn>
                            <sdk:DataGridTextColumn Header="Value" Binding="{Binding DisplayName}"></sdk:DataGridTextColumn>
                        </sdk:DataGrid.Columns>
                    </sdk:DataGrid>
                </ScrollViewer>

这样就达到了实现选中DataGrid中所有行的数据,并且带有滚动条的效果。

posted @ 2013-03-28 19:40  B追风少年  阅读(1493)  评论(0编辑  收藏  举报

hello too