通过Datagrid循环检查复选框以创建列表

时间:2012-10-18 18:52:06

标签: c# silverlight datagrid foreach

我有一个Silverlight DataGrid,而不是一个asp Gridview,它可以很好地填充。我为用户添加了一个复选框列,用于选择要下载的项目。我的目标是创建一个“购物车”,用户可以在其中选择项目,然后单击按钮添加它们。然后他们会去结账页等。

到目前为止,我的问题是我无法检查用户是否选中了复选框。我认为我的foreach循环很好,但是我在bool IsChecked行中得到了'nullreferenceexception'。在断点期间,没有一个值返回为我看到的null,但它显然不能按照我希望的方式工作。

foreach (var row in gridResults.ItemsSource)
        {
            bool IsChecked = (bool)((CheckBox)gridResults.Columns[8].GetCellContent(row)).IsChecked;

            if (IsChecked)
            {
                List<string> lstFile = new List<string>();
                string fileName = (gridResults.SelectedItem as JobSearchResult).FileName;
                lstFile.Add(fileName);
            }
        }

通过文件名,我可以找到服务器上的文件供他们下载,但我怎样才能检查他们是否检查了他们想要的文件?

1 个答案:

答案 0 :(得分:1)

如果不确切知道如何填充数据网格,很难告诉您问题的确切原因。但我会告诉你我将如何处理这种情况。

创建对象类型的ObservableCollection。将DataGrid的ItemsSource设置为ObservableCollection。然后,在数据网格行中,为复选框的IsChecked属性创建一个绑定到对象上的某个公共布尔值(可能称为IsSelected)。确保将绑定模式设置为TwoWay。

然后,您所要做的就是在ObservableCollection上使用linq查询。请记住,Silverlight是一个表示层,您根本不应该依赖它来执行业务逻辑。