C#.NET4.5、MS Visual Studio 2012、WPF を使用。
こんにちは、null を与えるコードがいくつかあります。このコードは、私が試した以前のソリューションです。エラーは発生しませんでしたが、今日デバッグしたときに行がnullであることがわかったので、テストしたことはありません。
コードは次のとおりです。
最初に、SQL から収集したデータをデータテーブルにスローし、それをデータグリッドにスローしました...
private void LoadPareto(string pg)
{
DataTable tbl = new DataTable();
tbl = mysqlq.SQL_GetPareto(pg);
paretogrid.ItemsSource = tbl.AsDataView();
// InsertColumns();
ShowArrows();
}
XAML での 2 番目のセットアップ バインディング...
<DataGrid Name ="paretogrid" ItemsSource="{Binding}"
3番目に、Ienumerableを作成しました...
public IEnumerable<System.Windows.Controls.DataGridRow> GetDataGridRow(System.Windows.Controls.DataGrid grid)
{
var itemsource = grid.ItemsSource as System.Collections.IEnumerable;
if (null == itemsource) yield return null;
foreach (var item in itemsource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow; // null?
if (null != row) yield return row;
}
}
次に、このメソッドで呼び出します...
private void ShowArrows()
{
var rows = GetDataGridRow(paretogrid); // fetching null?
foreach (DataGridRow r in rows)
{
DataRowView rv = (DataRowView)r.Item;
foreach (DataGridColumn column in paretogrid.Columns)
{
if (column.GetCellContent(r) is TextBlock)
{
TextBlock cellcontent = column.GetCellContent(r) as TextBlock;
MessageBox.Show(cellcontent.Text);
}
}
}
}
今私が抱えている問題は Ienumerbale にあります。私のアイテム ソースには完璧な 12007 レコードが含まれていることがわかります。しかし、一歩踏み出すと...
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
私の「if」ステートメントがそれをfalseとして見つけたので、yieldをスキップするnullを返しています。もちろん、「showarrows」メソッドで foreach ループをステップ実行すると、null があるので気にしません。
それで、どこが間違っているのですか?私は何かを逃していますか?
よろしくお願いします!