4

カスタム GridView コントロール ( system.web.ui.webcontrols.gridviewを継承) があり、ユーザーによって最近挿入された値に基づいて TextBox の値を制御したいと考えています (挿入された値はデータソースにコミットされません)。

Grid.DataBound では、単一の列のセルをクエリして、TextBox に設定した現在の最大値を取得できます。

int maxTimeSlot = grid.Rows.OfType<GridViewRow>().Max(r => int.Parse(r.Cells[1].Text));

新しい行を挿入した後、これまでに挿入されたすべての行のリストを含むグリッドの「挿入」プロパティにアクセスできます。次に例を示します。

GridView.Inserts[0].NewValues & GridView.Inserts[0].OldValues

私がする必要があるのは、この「挿入」リストを使用して最大値を再度取得することですが、値を取得するために NewValues.Values (OrderedDictionaryKeyValueCollection) を照会するのに苦労しています。

NewValues.Values.OfType<KeyValuePair<object, object>>().Select(r => r.Key == "timeslot").Max(t => (int)t.Value)

上記は、それがどのように機能するかについての私の「考え」ですが、当然、そうではありません。

4

1 に答える 1

3

KeyValuePairSelect の呼び出しはそれぞれをブール値に射影しNewValues.Valuesているため、元のデータにアクセスできなくなります。

すべての「タイムスロット」の値を見つけようとしているように見えるので、次のようなものが必要だと思います

NewValues.Values.OfType<KeyValuePair<object, object>>().Where(r => r.Key == "timeslot").Max(t => (int)t.Value)
于 2011-07-04T15:54:34.160 に答える