0

我有一个 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);
            }
        }

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

4

1 回答 1

1

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

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

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

于 2012-10-18T19:26:49.550 回答