1 つのアプローチは、Aristos が議論しているように、より Ajaxy な方法で更新を許可することです。これは通常、よりユーザー フレンドリーなアプローチと考えられており、より優れたユーザー エクスペリエンスを確実に提供しますが、jQuery と JavaScript に精通している必要があり、クライアントとサーバー間のやり取りは、あなたの観点からは少し複雑です。
Web コントロール パラダイムを引き続き使用する場合は、"Arrives At" フィールドと "Leaves At" フィールドを TemplateFields にすることを検討してください。 ItemTemplate では、データベースで連結したテキストを引き続き表示できますが、GridView を EditItemTemplate に配置します。この GridView は、データ ソース コントロール (EditItemTemplate 内) にバインドし、編集をサポートするように構成できます。プログラムでデータをバインドしている場合 (つまり、そうではありません) データ ソース コントロールを使用する場合)、親行が編集可能になるたびに、データを子 GridView にバインドする必要があります。これは、次のようにマークアップを使用して宣言的に行うことができます:
<asp:TemplateField ...>
<EditItemTemplate>
<asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
...
</asp:GridView>
</EditItemTemplate>
</asp:TemplateField>
ここで、SomeFunction
グリッドにバインドするデータを返すコード ビハインド クラス (通常) の関数になります。
または、親 GridView の RowDataBound
を介してプログラムでデータを子 GridView にバインドすることもできます。 イベントハンドラ。つまり、編集中の行を処理しているかどうかを確認します (つまり、e.Row.RowIndex = ParentGridViewID.EditIndex
の場合)。 )。その場合、e.Row.FindControl("ChildGridViewID")
を使用して子 GridView をプログラムで参照できます。 次に、その DataSource
を設定します プロパティを呼び出し、その DataBind
を呼び出します メソッド。
ユーザーが親グリッドの [編集] ボタンをクリックすると、[到着] セルと [出発] セルがグリッドとして表示され、個々の時間を変更するための独自の [編集] ボタンが表示されます。または、ユーザーが最初に親レコードの編集を選択する必要なく、ユーザーが「到着」時刻と「出発」時刻を編集できるようにする場合は、子の編集可能な GridView を ItemTemplate に配置することもできます。