シナリオ:
基本的に、各列にバインド セットを持つコードからグリッドビューを構築する必要がありますが、データは毎日製造された各製品の量で構成されています (特定の日付の間ですが、カバーされています)。
問題:
XAML を介して特定のプロパティを持つクラスにバインドする方法は知っていますが、これらの特定の日付にどの製品が製造されたかがわからず、それらすべてが製造されたという保証がないため、これは動的になります。そのため、動的な (ObservableCollection について考えた) オプションを構築する必要があります。これにより、ObservableCollection (またはこれに最適と思われるもの) 内の単純なクラスにバインドされたアイテムを追加できます。
現在のコード:
これは、製品と金額を取得するために使用する単純なクラスであり、日付ごとに必要です。
public class MonthlyProducts
{
public string ProductID { get; set; }
public int Amount { get; set; }
}
これが、どの製品が実際に製造されたかを知る方法です。
var ProductsInDates =
from Production in context.production
where Production.ProductionDate >= dtpStartDate.SelectedDate && Production.ProductionDate <= dtpEndDate.SelectedDate
group Production by Production.ProductID into Products
select new
{
ID = Products.Key
};
これは私がテーブルを作成する方法です。ここでは、コードを介してデータをバインドする方法がわかりません。
foreach (var item in ProductsInDates)
{
MonthlyProducts temp = new MonthlyProducts();
temp.ProductID = item.ID;
temp.Amount = 0;
MonthObservable.Add(temp);
GridViewColumn TempColumn = new GridViewColumn();
TempColumn.DisplayMemberBinding = new Binding(temp.ProductID);
TempColumn.Header = temp.ProductID;
TempColumn.Width = 100;
MonthlyGridView.Columns.Add(TempColumn);
}
ここで、製造された製品のすべての量を取得します (または、方法がわからないため、まだ取得していないと言います)。
var MonthProduction =
from Production in context.production
where Production.ProductionDate >= dtpStartDate.SelectedDate && Production.ProductionDate <= dtpEndDate.SelectedDate
group Production by Production.ProductionDate into MonthlyReport
select new
{
DateID = MonthlyReport.Key,
Row = MonthlyReport
};
これは私がこれで遊んでいるだけです。
基本的に、データ列に対して上記で行ったバインディングが機能するかどうかを確認する必要があります。これはまだ確認できないためです。また、この最後の LINQ クエリで各日付の各製品を合計する方法を知る必要があります。
何も忘れていないことを願っています。もしそうならお知らせください。必要な情報をすべて提供します。