0

データベースからデータをロードするデータグリッドがあります。私のデータグリッドには、 も含めて、行をチェックまたはチェック解除できるようにしました。

ここに写真があります。 ここに画像の説明を入力

ここに私のxamlがあります。

<DataGrid AutoGenerateColumns="False" Height="258" HorizontalAlignment="Left" Margin="12,0,0,12" 
              Name="dataGrid1" VerticalAlignment="Bottom" Width="479" ItemsSource="{Binding data}" 
              AlternatingRowBackground="#FFC4B0B0">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding nCateogryID}" Header="No." IsReadOnly="True" Width="30" />
            <DataGridTextColumn Binding="{Binding sCategoryDesc}" Header="Nama Kategori" IsReadOnly="True" Width="160" />
            <DataGridTextColumn Binding="{Binding sCategoryItems}" Header="Keterangan Kategori" IsReadOnly="True" Width="170" />
            <DataGridCheckBoxColumn Header="Checked?" />
        </DataGrid.Columns>
    </DataGrid>

「ボタン」を押すたびに、どのデータがすでにチェックされているかを知るにはどうすればよいですか? 私もグーグルで検索していますが、何も見つかりませんでした。

私はこう思います。「ボタン」をクリックするたびに、各行のチェックを開始します。どうすればできますか?そのためのサンプルはありますか?

別の解決策も考えているのですが、イベントハンドラを使ってみてはいかがでしょうか? つまり、行をクリックしてチェックすると、イベントがトリガーされ、チェックされているかどうかがチェックされます。どうすればできますか?

私にとっては、チェックしてボタンを押すよりもはるかに高速であるため、イベントハンドラーを使用する方がより達成可能です。10行しかない場合、それは大きな問題ではありません。1000行ある場合はどうですか?いちいちチェックすると面倒です。多くの時間を無駄にします。何か案が?ありがとう。

または、datagrid_selectionchanged を使用してください。チェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?

ユーザーがボタンを押すまで待ってから、チェックされているかどうかを確認するため、プロセスが遅いと思います。行ごとに確認する必要があります。私の行が10行しかない場合、おそらく大丈夫です。1000行をチェックする必要がある場合はどうですか? ありがとう。:)

4

2 に答える 2

1
for(int i=0;i<DataGrid.items.count-1;i++)
{
     CheckBox chkBx = (CheckBox)DataGrid.items[i].Cells[3].FindControl("EmpId") ;
     if( chkBx !=null && chkBx.Checked )
      {
        Response.Write(DataGrid.items[i].Cells[1].Text.ToString() );
      }
}

ここで「EmpId」はチェックボックス名(コントロール名)で、最初のセルの値を書き込みに使用しています。セル インデックスは、必要に応じて変更できます。

于 2012-10-10T04:47:20.047 に答える
0

データベースには、Checked ? のフィールドがあります。そうでない場合は、アイテムのクラス オブジェクトを拡張し、たとえば IsChecked という名前の新しいプロパティを追加してから、バインディングを介してアイテムをチェック/チェック解除する必要があります。あなたの場合、「データ」はいくつかのカスタムオブジェクトのコレクションです。そのカスタム オブジェクトを拡張し、それに新しいプロパティを追加します。この後、データグリッドのソース コレクションを列挙し、どれがチェックされているかを見つけることができます。このようなもの:

var checkedItems = data.Where(x => x.IsChecked == true).ToList();
于 2012-10-10T06:36:21.317 に答える