Hi,
I try with the 3 level sample for hierarchical Insert/delete. I have lost the insert for level 1 and level2, only master allow Insert operations. I have activated Autoinsert methods with no result. I've searched but no solution. Why I'm not able to insert in my tables?
Master : loc_Ontrip poin_id(int auto) <--Insert OK
level1: loc_Ontrip_service service_id(int auto), point_id(int)
level2: loc_Ontrip_service_room room_id(int auto), service_id(int)
I have tested with point_id, service_id at level 1 and 2 as string, with no result.
I have tested with complete queries Insert, Update, Delete methods or simplefied like this post with only select methods for level1, and 2
I use the telerik sample with no modifications !
aspx
aspx.cs
I try with the 3 level sample for hierarchical Insert/delete. I have lost the insert for level 1 and level2, only master allow Insert operations. I have activated Autoinsert methods with no result. I've searched but no solution. Why I'm not able to insert in my tables?
Master : loc_Ontrip poin_id(int auto) <--Insert OK
level1: loc_Ontrip_service service_id(int auto), point_id(int)
level2: loc_Ontrip_service_room room_id(int auto), service_id(int)
I have tested with point_id, service_id at level 1 and 2 as string, with no result.
I have tested with complete queries Insert, Update, Delete methods or simplefied like this post with only select methods for level1, and 2
I use the telerik sample with no modifications !
aspx
<telerik:RadGrid ID="RadGrid1" DataSourceID="SessionDataSource1" runat="server" Skin="Telerik" ShowStatusBar="true" |
Width="95%" AutoGenerateColumns="False" PageSize="3" AllowSorting="True" AllowMultiRowSelection="False" |
AllowPaging="True" GridLines="None" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" AllowAutomaticUpdates="True" |
OnItemUpdated="RadGrid1_ItemUpdated" OnItemDeleted="RadGrid1_ItemDeleted" OnItemInserted="RadGrid1_ItemInserted" OnInsertCommand="RadGrid1_InsertCommand"> |
<PagerStyle Mode="NumericPages"></PagerStyle> |
<MasterTableView DataSourceID="SessionDataSource1" DataKeyNames="point_id" AllowMultiColumnSorting="True" |
Width="100%" CommandItemDisplay="Top" Name="Hotel"> |
<DetailTables> |
<%--level2 Services--%> |
<telerik:GridTableView DataKeyNames="service_id" DataSourceID="SessionDataSource2" Width="100%" |
runat="server" CommandItemDisplay="Top" Name="Services" AllowAutomaticInserts="true"> |
<ParentTableRelation> |
<telerik:GridRelationFields DetailKeyField="point_id" MasterKeyField="point_id" /> |
</ParentTableRelation> |
<DetailTables> |
<%--level3 Rooms --%> |
<telerik:GridTableView DataKeyNames="room_id" DataSourceID="SessionDataSource3" Width="100%" |
runat="server" CommandItemDisplay="Top" Name="Rooms" AllowAutomaticInserts="true" > |
<ParentTableRelation> |
<telerik:GridRelationFields DetailKeyField="service_id" MasterKeyField="service_id" /> |
</ParentTableRelation> |
<Columns> |
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn1"> |
<HeaderStyle Width="20px" /> |
<ItemStyle CssClass="MyImageButton" /> |
</telerik:GridEditCommandColumn> |
<telerik:GridBoundColumn SortExpression="room_id" HeaderText="Rooms" HeaderButtonType="TextButton" |
DataField="room_id" UniqueName="room_id" ReadOnly="true" Visible="false"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn SortExpression="Price" HeaderText="UPrice" HeaderButtonType="TextButton" |
DataField="Price" UniqueName="Price"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn SortExpression="PriceWE" HeaderText="PriceWE" HeaderButtonType="TextButton" |
DataField="PriceWE" UniqueName="PriceWE"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn SortExpression="Discount" HeaderText="Discount" HeaderButtonType="TextButton" |
DataField="Discount" UniqueName="Discount"> |
</telerik:GridBoundColumn> |
<telerik:GridButtonColumn ConfirmText="Delete this room?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn1"> |
<HeaderStyle Width="20px" /> |
<ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> |
</telerik:GridButtonColumn> |
</Columns> |
<SortExpressions> |
<telerik:GridSortExpression FieldName="PriceWE" SortOrder="Descending"></telerik:GridSortExpression> |
</SortExpressions> |
</telerik:GridTableView> |
</DetailTables> |
<Columns> |
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn2"> |
<HeaderStyle Width="20px" /> |
<ItemStyle CssClass="MyImageButton" /> |
</telerik:GridEditCommandColumn> |
<telerik:GridBoundColumn SortExpression="service_id" HeaderText="service_id" HeaderButtonType="TextButton" |
DataField="service_id" UniqueName="service_id" ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn SortExpression="service_name" HeaderText="Service" HeaderButtonType="TextButton" |
DataField="service_name" UniqueName="service_name" ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridButtonColumn ConfirmText="Delete this service?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn2"> |
<HeaderStyle Width="20px" /> |
<ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> |
</telerik:GridButtonColumn> |
</Columns> |
<SortExpressions> |
<telerik:GridSortExpression FieldName="service_name"></telerik:GridSortExpression> |
</SortExpressions> |
</telerik:GridTableView> |
</DetailTables> |
<Columns> |
<telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"> |
<HeaderStyle Width="20px" /> |
<ItemStyle CssClass="MyImageButton" /> |
</telerik:GridEditCommandColumn> |
<telerik:GridBoundColumn SortExpression="point_id" HeaderText="point_id" HeaderButtonType="TextButton" |
DataField="point_id" UniqueName="point_id" ReadOnly="true"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn SortExpression="point_name" HeaderText="Name" HeaderButtonType="TextButton" |
DataField="point_name" UniqueName="point_name"> |
</telerik:GridBoundColumn> |
<telerik:GridBoundColumn SortExpression="point_adress" HeaderText="Adress" HeaderButtonType="TextButton" |
DataField="point_adress" UniqueName="point_adress"> |
</telerik:GridBoundColumn> |
<telerik:GridButtonColumn ConfirmText="Delete this hotel?" ButtonType="ImageButton" CommandName="Delete" Text="Delete" UniqueName="DeleteColumn"> |
<HeaderStyle Width="20px" /> |
<ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> |
</telerik:GridButtonColumn> |
</Columns> |
<SortExpressions> |
<telerik:GridSortExpression FieldName="point_adress"></telerik:GridSortExpression> |
</SortExpressions> |
</MasterTableView> |
</telerik:RadGrid> |
<%--DATASOURCES --%> |
<asp:SqlDataSource ID="SessionDataSource1" ConnectionString="<%$ ConnectionStrings:MyProv %>" |
ProviderName="<%$ ConnectionStrings:MyProv.ProviderName %>" |
SelectCommand="SELECT * FROM loc_OnTrip" runat="server" |
OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues"> |
</asp:SqlDataSource> |
<asp:SqlDataSource ID="SessionDataSource2" ConnectionString="<%$ ConnectionStrings:MyProv %>" |
ProviderName="<%$ ConnectionStrings:MyProv.ProviderName %>" |
SelectCommand="SELECT * FROM [loc_OnTrip_Service] Where point_id = @point_id" runat="server" |
OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues" > |
<SelectParameters> |
<asp:Parameter Name="point_id" Type="string" /> |
</SelectParameters> |
</asp:SqlDataSource> |
<asp:SqlDataSource ID="SessionDataSource3" ConnectionString="<%$ ConnectionStrings:MyProv%>" |
ProviderName="<%$ ConnectionStrings:MyProv.ProviderName %>" |
SelectCommand="SELECT * FROM [loc_OnTrip_Service_room] where service_id = @service_id" runat="server" |
OldValuesParameterFormatString="original_{0}" ConflictDetection="CompareAllValues" > |
<SelectParameters> |
<asp:Parameter Name="service_id" Type="string" /> |
</SelectParameters> |
</asp:SqlDataSource> |
<br /> |
aspx.cs
private void Page_Load(object sender, EventArgs e) |
{ |
if (!IsPostBack) |
{ |
//Setting Selected index prior to binding RadGrid: |
//If the index is in detail table, parent items will be expanded |
//automatically |
RadGrid1.SelectedIndexes.Add(1, 0, 1, 0, 0); |
//Index of 1, 0, 1, 0, 0 means: |
//1 - item with index 1 in the MasterTabelView |
//0 - detail table with index 0 |
//1 - item with index 1 (the second item) in the first detail table |
//0 - 0 the third-level detail table |
//0 - the item with index 0 in the third-level table |
} |
} |
protected void RadGrid1_ItemUpdated(object source, Telerik.Web.UI.GridUpdatedEventArgs e) |
{ |
string item = getItemName(e.Item.OwnerTableView.Name); |
string field = getFieldName(e.Item.OwnerTableView.Name); |
if (e.Exception != null) |
{ |
e.KeepInEditMode = true; |
e.ExceptionHandled = true; |
DisplayMessage(item + " " + e.Item[field].Text + " cannot be updated. Reason: " + e.Exception.Message); |
} |
else |
{ |
DisplayMessage(item + " " + e.Item[field].Text + " updated"); |
} |
} |
protected void RadGrid1_ItemInserted(object source, GridInsertedEventArgs e) |
{ |
string item = getItemName(e.Item.OwnerTableView.Name); |
if (e.Exception != null) |
{ |
e.ExceptionHandled = true; |
DisplayMessage(item + " cannot be inserted. Reason: " + e.Exception.Message); |
} |
else |
{ |
DisplayMessage(item + " inserted"); |
} |
} |
protected void RadGrid1_ItemDeleted(object source, GridDeletedEventArgs e) |
{ |
string item = getItemName(e.Item.OwnerTableView.Name); |
string field = getFieldName(e.Item.OwnerTableView.Name); |
if (e.Exception != null) |
{ |
e.ExceptionHandled = true; |
DisplayMessage(item + " " + e.Item[field].Text + " cannot be deleted. Reason: " + e.Exception.Message); |
} |
else |
{ |
DisplayMessage(item + " " + e.Item[field].Text + " deleted"); |
} |
} |
protected void RadGrid1_InsertCommand(object source, GridCommandEventArgs e) |
{ |
if ("Service".Equals(e.Item.OwnerTableView.Name)) |
{ |
GridDataItem parentItem = (GridDataItem)e.Item.OwnerTableView.ParentItem; |
SessionDataSource2.InsertParameters["point_id"].DefaultValue = parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex]["point_id"].ToString(); |
} |
else if ("Rooms".Equals(e.Item.OwnerTableView.Name)) |
{ |
GridDataItem parentItem = (GridDataItem)e.Item.OwnerTableView.ParentItem; |
SessionDataSource3.InsertParameters["service_id"].DefaultValue = parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex]["service_id"].ToString(); |
} |
} |
/* Sample |
protected void RadGrid1_InsertCommand(object source, GridCommandEventArgs e) |
{ |
GridDataItem parentItem = e.Item.OwnerTableView.ParentItem as GridDataItem; |
nestedTableSource.InsertParameters["EmployeeID"].DefaultValue = parentItem.OwnerTableView.DataKeyValues[parentItem.ItemIndex]["EmployeeID"].ToString(); |
} |
*/ |
private String getItemName(string tableName) |
{ |
switch (tableName) |
{ |
case ("Hotel"): |
{ |
return "loc_Ontrip";// for Hotels |
} |
case ("Service"): |
{ |
return "loc_OnTrip_Service";// for services |
} |
case ("Rooms"): |
{ |
return "loc_OnTrip_Services_room"; // for Rooms |
} |
default: return ""; |
} |
} |
private String getFieldName(string tableName) |
{ |
switch (tableName) |
{ |
case ("loc_Ontrip"): |
{ |
return "point_id"; |
} |
case ("loc_OnTrip_Service"): |
{ |
return "service_id"; |
} |
case ("loc_OnTrip_Services_room"): |
{ |
return "room_id"; |
} |
default: return ""; |
} |
} |
private void DisplayMessage(string text) |
{ |
RadGrid1.Controls.Add(new LiteralControl(string.Format("<span style='color:red'>{0}</span>", text))); |
} |