Telerik RadGrid を使用して、階層データを表示および編集しています。奇妙に聞こえるかもしれませんが、要件の 1 つは、親行のリンクがクリックされたときに子詳細グリッドを挿入モードで開くことです。これには 2 つのことが必要です。子グリッドの拡張と、このグリッドを挿入モードでロードします。
これは、Telerik のドキュメントの推奨事項を使用して、これまでに試したことです。ただし、これは機能せず、rebind が呼び出されると例外がスローされ、子の詳細グリッドがその linqDataSourceControl を見つけることができないというメッセージが表示されます。ただし、このコントロールは、以下のコードの実行中に存在します (私が確認しました)。
親行コマンド ボタンから挿入モードで子 DetailGridView を開くソリューションは何ですか?
マークアップ:
...
<DetailTables>
<telerik:GridTableView>
...
<Columns>
<ItemTemplate>
<asp:LinkButton ID="addChildVendorRating" runat="server" CommandName="AddNewChildRating" CausesValidation="false" CssClass="normal-link" CommandArgument='<%# Eval("VendorM2MEntityToQualID")%>'>[Add Rating]</asp:LinkButton>
</ItemTemplate>
</Columns>
<DetailTables>
<!-- I Need this to be be expanded and in insert mode when addChildVendorRating command link is clicked -->
<telerik:GridTableView>
</<DetailTables>
コード:
protected void gridRatings_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == "AddNewChildRating") {
GridDataItem parentRow = e.Item as GridDataItem;
GridTableView parentGridView = parentRow.GetClosestParentControlByType<GridTableView>();
RadGrid parentGrid = parentGridView.GetClosestParentControlByType<RadGrid>();
parentRow.Expanded = true;
//parentGridView.HierarchyDefaultExpanded = true;
//parentGridView.DetailTables[0].InsertItem();
parentGridView.DetailTables[0].IsItemInserted = true;
parentGridView.DetailTables[0].Rebind();
}
}