0

データグリッドコントロール内のボタンクリックイベントで列の値を取得するにはどうすればよいですか?
グリッドには5つの列があり、5番目の列はボタンコントロールで、最初の列はID値
です。

Int32 paperID = Convert.ToInt32(((System.Data.DataRowView)(DataGrid_MarksSummary.SelectedItem)).Row.ItemArray[0].ToString());

ここで paperID は常に 0 に
なります。ボタンをクリックしたときにこの ID 値を取得する方法。

4

1 に答える 1

0

コードにボタンのクリックイベントハンドラーがあるとすると、このハンドラーのビジュアルツリーをトラバースして、実際に必要な基になる行とデータを見つけることができます。

private void ColumnButtonClick(object sender, RoutedEventArgs e)
    {
        Visual visual = (Visual)sender;
        while ((visual = VisualTreeHelper.GetParent(visual) as Visual) != null)
        {
            if (!(visual is DataGridRow)) continue;

            var row = (DataGridRow)visual;
            object item = row.Item; //your bound object
            break;
        }
    }

この場合、「item」変数は、DataGridRow内の実際のデータバインドされたオブジェクトを保持します。これをデータグリッドのソースとして実際に使用するオブジェクトタイプにキャストし、その後、これから必要なPaperIDを取得できます。

于 2012-07-24T09:22:44.097 に答える