0

セッション内のリストへのlinqクエリであるGridView DataSourceがあります。

List<Invoice> returnInvoices = (List<Invoice>)Session["Invoices"];

    var partInvoices = from i in returnInvoices
                       where i.PartNo == partNo
                       select new
                       {
                           i.InvoiceID,
                           i.InvoiceNo,
                           i.InvoiceLine,
                           i.InvoiceDate,
                           i.OrderNo,
                           i.OrderLine,
                           i.OrderRel,
                           i.OrderLineItem,
                           i.OrderLineQty,
                           i.CustomerPO,
                           i.Serialized
                       };

    GridView3.DataSource = partInvoices;
    GridView3.DataBind();

GridView から行を選択すると、GridView よりも多くのオブジェクトを含む元のセッション リスト内の関連オブジェクトを更新する必要があります。(つまり、linq クエリの部品だけでなく、すべての部品の請求書)

私の質問は、GridView で選択したオブジェクトを元のリストに関連付ける方法を教えてください。GridView.SelectedIndex を使用したかったのですが、GridView の 0 は元のリストでは 382 になる可能性があるため、これは機能しません。

私は少し立ち往生しており、これを行う方法がわかりません。助けやアドバイスをいただければ幸いです。

4

2 に答える 2

0

セッションで Invoiceid を使用してオブジェクトを見つけ、グリッドを介して更新されたプロパティを更新する必要があります。

于 2012-12-13T14:57:30.467 に答える
0

クエリで (匿名型の) 新しいオブジェクトを作成しないでください。代わりに、実際のオブジェクトにバインドしてください。

List<Invoice> returnInvoices = (List<Invoice>)Session["Invoices"];

var partInvoices = returnInvoices
                       .Where(invoice => invoice.PartNo == partNo)
                       .ToList();

GridView3.DataSource = partInvoices;
GridView3.DataBind();

何らかの理由でこれが不可能な場合、物事は少し面倒になります。実際のオブジェクトとLINQクエリで作成されたオブジェクトとの間のマッピングを辞書などに保存できますが、最適なソリューションはニーズによって異なります。

于 2012-12-13T14:57:46.330 に答える