0

aspGridviewではなくSilverlightDataGridがあり、正常に入力されます。ユーザーがダウンロードするアイテムを選択するためのチェックボックス列を追加しました。私の目標は、ユーザーがアイテムを選択し、ボタンをクリックして追加できる「カート」を作成することです。その後、チェックアウトページなどに移動します。

これまでの私の問題は、ユーザーがチェックボックスをオンにしたかどうかを確認するのに問題があることです。私のforeachはうまくループしていると思いますが、boolIsChecked行に「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を呼び出します)。バインドモードは必ずTwoWayに設定してください。

次に、ObservableCollectionでlinqクエリを使用するだけです。Silverlightはプレゼンテーション層であり、ビジネスロジックを実行するためにSilverlightにまったく依存しないでください。

于 2012-10-18T19:26:49.550 に答える