Pradeep Enugala
Top achievements
Rank 1
Pradeep Enugala
asked on 13 May 2010, 07:31 AM
I have a RadGrid (Grid1) with Master table edit mode = popup. I have the following code in the commandItemTemplate. The popup is a user control.The popup has some textboxes and another Grid (Grid2).
If I click on "Add Location" it opens a popup. I enter some data and when I click on save, It closes the popup and inserts the data in the RadGrid. But I want the popup to remain open. This is because I want to have a Save button for saving the textboxes data to Grid1 and a OK button for saving the selections in the Grid2 to the Grid1.
Is it possible to keep the popup open after Inserting data into Grid1?
| <CommandItemTemplate> |
| <table width="100%" border="0" cellspacing="0" cellpadding="0"> |
| <tr style="height: 20px"> |
| <td style="width: 100%; color: #074768" align="right"> |
| <asp:LinkButton ID="lnkBtnAddLocation" runat="server" CommandName="InitInsert" Style="font-weight: bold; |
| padding-right: 2px; color: #074768;"> |
| <asp:ImageButton ID="imgbtn_AddLocation" runat="server" SkinID="AddRecord" CommandName="InitInsert" /> |
| Add Location |
| </asp:LinkButton> |
| </td> |
| </tr> |
| </table> |
| </CommandItemTemplate> |
If I click on "Add Location" it opens a popup. I enter some data and when I click on save, It closes the popup and inserts the data in the RadGrid. But I want the popup to remain open. This is because I want to have a Save button for saving the textboxes data to Grid1 and a OK button for saving the selections in the Grid2 to the Grid1.
Is it possible to keep the popup open after Inserting data into Grid1?
17 Answers, 1 is accepted
0
Hello Pradeep,
Here is the code for keeping the pop-insert form:
Hope it helps.
All the best,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
Here is the code for keeping the pop-insert form:
protected void Page_Load(object sender, EventArgs e) { RadGrid1.ItemInserted += new GridInsertedEventHandler(RadGrid1_ItemInserted); } protected void RadGrid1_ItemInserted(object source, GridInsertedEventArgs e) { e.KeepInInsertMode = true; }Hope it helps.
All the best,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items.
0
Stephen
Top achievements
Rank 1
answered on 23 Sep 2010, 09:08 PM
Hello,
I am trying to do the same thing but when I put that code in the Page_Load, I get two errors highlighted in the environment.
1. 'Public Event ItemInserted(source As Object, e As Telerik.Web.UI.GridInsertedEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
2. Delegate 'Telerik.Web.UI.GridInsertedEventHandler' requires and 'AddressOf' expression or lambda expression as the only argument to its constructor.
Thanks,
Steve
I am trying to do the same thing but when I put that code in the Page_Load, I get two errors highlighted in the environment.
1. 'Public Event ItemInserted(source As Object, e As Telerik.Web.UI.GridInsertedEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
2. Delegate 'Telerik.Web.UI.GridInsertedEventHandler' requires and 'AddressOf' expression or lambda expression as the only argument to its constructor.
Thanks,
Steve
0
Hello Stephen,
My code snippet is in C# and you evidently are programming in VB. Here is the code in VB:
Hope it helps.
Greetings,
Tsvetoslav
the Telerik team
My code snippet is in C# and you evidently are programming in VB. Here is the code in VB:
Protected Sub Page_Load(sender As Object, e As EventArgs) RadGrid1.ItemInserted += New GridInsertedEventHandler(AddressOf RadGrid1_ItemInserted) End Sub
Protected Sub RadGrid1_ItemInserted(source As Object, e As GridInsertedEventArgs) e.KeepInInsertMode = TrueEnd SubHope it helps.
Greetings,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 29 Sep 2010, 04:41 PM
Hello,
I had converted the code to VB first...but the code converter didn't give me the 'AddressOf ' so I added that in and it solved the second error. But I am still getting the first error:
'Public Event ItemInserted(source As Object, e As Telerik.Web.UI.GridInsertedEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
How do I use the RaiseEvent statement with this as it seems it doesn't like me calling it as is?
thanks,
Steve
I had converted the code to VB first...but the code converter didn't give me the 'AddressOf ' so I added that in and it solved the second error. But I am still getting the first error:
'Public Event ItemInserted(source As Object, e As Telerik.Web.UI.GridInsertedEventArgs)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.
How do I use the RaiseEvent statement with this as it seems it doesn't like me calling it as is?
thanks,
Steve
0
Hi Stephen,
The error states that somewhere in your code you have a statement such as the one below:
ItemInserted(....)
where as you cannot call event delegates in this way as they will automatically triggered by the framework. Could you paste you complete code-behind?
Regards,
Tsvetoslav
the Telerik team
The error states that somewhere in your code you have a statement such as the one below:
ItemInserted(....)
where as you cannot call event delegates in this way as they will automatically triggered by the framework. Could you paste you complete code-behind?
Regards,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 05 Oct 2010, 02:55 PM
Hello,
The only place that appears is the two places you designated:
Thanks,
Steve
The only place that appears is the two places you designated:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim cRegistration As New CRegistration hidRegistrationID.Value = DirectCast(Me.Parent.NamingContainer, GridNestedViewItem).ParentItem.GetDataKeyValue("RegistrationID").ToString() cRegistration.LoadRegistrationTypeID(HttpContext.Current.Session("UserID").ToString, hidRegistrationID.Value) hidRegistrationTypeID.Value = cRegistration.RegistrationTypeID.ToString gvOrders.ItemInserted += New GridInsertedEventHandler(AddressOf gvOrders_ItemInserted) End SubProtected Sub gvOrders_ItemInserted(ByVal source As Object, ByVal e As GridInsertedEventArgs) e.KeepInInsertMode = TrueEnd SubThanks,
Steve
0
Hi Stephen,
The code seems all right. Still expecting the complete code-behind. You can also add the aspx. Thanks for that.
Regards,
Tsvetoslav
the Telerik team
The code seems all right. Still expecting the complete code-behind. You can also add the aspx. Thanks for that.
Regards,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 08 Oct 2010, 02:32 PM
Ok here is the complete codebehind:
This is actually a user control so here is the complete ascx:
Imports WorkshopsLibrary Imports Telerik.Web.UI Partial Public Class orders Inherits System.Web.UI.UserControl Protected WithEvents gvAddOns As GridView Protected WithEvents rblRequiredRegistration As RadioButtonList Protected bAddOnsChecked As Boolean = False Protected iExhibitorAttendeesIncluded As Integer Protected bRegistrationLateFee As Boolean Protected dRegistrationLateFeeDeadline As Date Protected bRegistered As Boolean = False Protected iAllowableTotal As Integer Protected iUnallowableTotal As Integer Protected iTotal As Integer Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim cRegistration As New CRegistration hidRegistrationID.Value = DirectCast(Me.Parent.NamingContainer, GridNestedViewItem).ParentItem.GetDataKeyValue("RegistrationID").ToString() cRegistration.LoadRegistrationTypeID(HttpContext.Current.Session("UserID").ToString, hidRegistrationID.Value) hidRegistrationTypeID.Value = cRegistration.RegistrationTypeID.ToString gvOrders.ItemInserted += New GridInsertedEventHandler(AddressOf gvOrders_ItemInserted) End Sub Private Function CustomValidation(ByVal e As Telerik.Web.UI.GridCommandEventArgs) As Boolean Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem) Dim gvAddOns As GridView = CType(editedItem.FindControl("gvAddOns"), GridView) Dim lblStatus As Label = CType(editedItem.FindControl("lblStatus"), Label) Dim bValid As Boolean = True Dim bMismatchItem As Boolean = False Dim bMismatchQuantity As Boolean = False For Each row As GridViewRow In gvAddOns.Rows Dim chkItem As CheckBox = CType(row.FindControl("chkItem"), CheckBox) Dim txtQuantity As TextBox = CType(row.FindControl("txtQuantity"), TextBox) If (chkItem IsNot Nothing) And (chkItem.Checked) Then If txtQuantity.Text = "" Then bMismatchItem = True End If Else If txtQuantity.Text <> "" Then bMismatchQuantity = True End If End If Next If bMismatchItem Then bValid = False lblStatus.Text = "Error: You must enter the quantity for the item you selected." lblStatus.Visible = True End If If bMismatchQuantity Then bValid = False lblStatus.Text = "Error: You must check the item for which you have entered a quantity." lblStatus.Visible = True End If Return bValid End Function Protected Sub gvAddOns_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvAddOns.RowDataBound If e.Row.DataItem Is Nothing Then Exit Sub If e.Row.RowType = DataControlRowType.DataRow Then Dim sID As String = DataBinder.Eval(e.Row.DataItem, "ID").ToString() Dim sDescription As String = DataBinder.Eval(e.Row.DataItem, "Description").ToString() Dim chkItem As CheckBox = CType(e.Row.FindControl("chkItem"), CheckBox) Dim txtQuantity As TextBox = CType(e.Row.FindControl("txtQuantity"), TextBox) Dim txtPrice As TextBox = CType(e.Row.FindControl("txtPrice"), TextBox) Dim cCatalog As New CCatalog cCatalog.LoadBundle(HttpContext.Current.Session("UserID").ToString, sID) txtPrice.Text = cCatalog.BundlePrice.ToString If hidRegistrationTypeID.Value = "3" Then Dim cExhibitors As New CExhibitors Dim dsAttendees As DataSet = cExhibitors.dsAttendeeList(HttpContext.Current.Session("UserID").ToString, hidRegistrationID.Value, HttpContext.Current.Session("AdminWorkshopID").ToString) Dim iAttendeeCount As Integer = dsAttendees.Tables(0).Rows.Count If sDescription = "Additional Attendee" Then If iAttendeeCount > iExhibitorAttendeesIncluded Then If Not bRegistered Then chkItem.Checked = True txtQuantity.Text = CStr(iAttendeeCount - iExhibitorAttendeesIncluded) End If End If End If End If If sDescription = "Late Fee" Then If bRegistrationLateFee Then If (DateDiff(DateInterval.Day, CDate(FormatDateTime(Now, DateFormat.ShortDate)), CDate(FormatDateTime(dRegistrationLateFeeDeadline, DateFormat.ShortDate))) < 1) Then If Not bRegistered Then chkItem.Checked = True txtQuantity.Text = "1" End If End If End If e.Row.Visible = False End If End If End Sub Private Sub gvOrders_DetailTableDataBind(ByVal source As Object, ByVal e As GridDetailTableDataBindEventArgs) Handles gvOrders.DetailTableDataBind Dim dataItem As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem) Select Case e.DetailTableView.Name Case "OrderSummary" odsOrderSummaryList.SelectParameters("OrderID").DefaultValue = dataItem.GetDataKeyValue("ID").ToString() End Select End Sub Private Sub gvOrders_InsertCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles gvOrders.InsertCommand If e.CommandName = RadGrid.PerformInsertCommandName Then If CustomValidation(e) Then Dim cRegistration As New CRegistration Dim iRet As Integer Dim bRet As Boolean = False Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem) iRet = cRegistration.AddOrder(HttpContext.Current.Session("UserID").ToString, hidRegistrationID.Value, HttpContext.Current.Session("AdminWorkshopID").ToString) Dim rblRequiredRegistration As RadioButtonList = CType(editedItem.FindControl("rblRequiredRegistration"), RadioButtonList) Dim txtPrice As TextBox = CType(editedItem.FindControl("txtPrice"), TextBox) Dim gvAddOns As GridView = CType(editedItem.FindControl("gvAddOns"), GridView) If iRet > 0 Then bRet = cRegistration.AddUpOrderItemOverride(HttpContext.Current.Session("UserID").ToString, _ iRet.ToString, _ rblRequiredRegistration.SelectedValue, _ "1", _ txtPrice.Text) If bRet Then For Each row As GridViewRow In gvAddOns.Rows Dim chkItem As CheckBox = CType(row.FindControl("chkItem"), CheckBox) Dim txtQuantity As TextBox = CType(row.FindControl("txtQuantity"), TextBox) Dim txtAddOnPrice As TextBox = CType(row.FindControl("txtPrice"), TextBox) If chkItem IsNot Nothing AndAlso chkItem.Checked Then bRet = cRegistration.AddUpOrderItemOverride(HttpContext.Current.Session("UserID").ToString, _ iRet.ToString, _ gvAddOns.DataKeys(row.RowIndex).Value.ToString, _ txtQuantity.Text, _ txtAddOnPrice.Text) If Not bRet Then Exit For End If End If Next If bRet Then gvOrders.DataBind() Else gvOrders.Controls.Add(New LiteralControl("<strong>Save add-ons failed!</strong>")) End If Else gvOrders.Controls.Add(New LiteralControl("<strong>Save registration failed!</strong>")) End If Else gvOrders.Controls.Add(New LiteralControl("<strong>Add Order failed!</strong>")) End If End If End If End Sub Private Sub gvOrders_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles gvOrders.ItemCommand If e.CommandName = RadGrid.EditCommandName Then e.Item.OwnerTableView.EditMode = GridEditMode.InPlace End If If e.CommandName = RadGrid.InitInsertCommandName Then e.Item.OwnerTableView.EditMode = GridEditMode.PopUp End If End Sub Protected Sub gvOrders_ItemInserted(ByVal source As Object, ByVal e As GridInsertedEventArgs) e.KeepInInsertMode = True End Sub Private Sub gvOrders_UpdateCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles gvOrders.UpdateCommand Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem) Dim editMan As GridEditManager = editedItem.EditManager Dim column As GridColumn For Each column In e.Item.OwnerTableView.Columns If TypeOf column Is IGridEditableColumn Then Dim editableCol As IGridEditableColumn = CType(column, IGridEditableColumn) If (editableCol.IsEditable) Then Dim editor As IGridColumnEditor = editMan.GetColumnEditor(editableCol) Dim editorType As String = CType(editor, Object).ToString() Dim editorText As String = "unknown" Dim editorValue As Object = Nothing If (TypeOf editor Is GridBoolColumnEditor) Then editorText = CType(editor, GridBoolColumnEditor).Value.ToString() editorValue = CType(editor, GridBoolColumnEditor).Value End If Dim cRegistration As New CRegistration Dim iRet As Integer = cRegistration.UpdateOrder(HttpContext.Current.Session("UserID").ToString, _ editedItem.OwnerTableView.DataKeyValues(editedItem.ItemIndex)("ID").ToString, _ CBool(editorValue), _ HttpContext.Current.Session("AdminWorkshopID").ToString) If iRet <> 0 Then gvOrders.DataBind() Else gvOrders.Controls.Add(New LiteralControl("<strong>Save Failed!</strong>")) End If End If End If Next End Sub Private Sub rblRequiredRegistration_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles rblRequiredRegistration.SelectedIndexChanged Dim cCatalog As New CCatalog Dim editForm As GridEditFormItem = DirectCast(rblRequiredRegistration.NamingContainer, GridEditFormItem) Dim txtPrice As TextBox = DirectCast(editForm.FindControl("txtPrice"), TextBox) cCatalog.LoadBundle(HttpContext.Current.Session("UserID").ToString, rblRequiredRegistration.SelectedValue) txtPrice.Text = cCatalog.BundlePrice.ToString End Sub End ClassThis is actually a user control so here is the complete ascx:
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="orders.ascx.vb" Inherits="WorkshopsAdmin.orders" %> <%@ Register TagPrefix="telerik" Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" %> <asp:HiddenField ID="hidRegistrationID" runat="server" /> <asp:HiddenField ID="hidRegistrationTypeID" runat="server" /> <asp:Panel ID="pnlBottomPanel" runat="server" CssClass="tab_panel"> <telerik:RadGrid ID="gvOrders" DataSourceID="odsOrderList" runat="server" AutoGenerateColumns="False" PageSize="20" GridLines="None" Skin="Office2007"> <PagerStyle Mode="NextPrevAndNumeric" /> <MasterTableView DataSourceID="odsOrderList" DataKeyNames="ID" EditMode="InPlace" CommandItemDisplay="Top" CommandItemSettings-AddNewRecordText="Add Order"> <DetailTables> <telerik:GridTableView CssClass="detail_table" DataSourceID="odsOrderSummaryList" DataKeyNames="ID" Name="OrderSummary" AutoGenerateColumns="false" Width="100%" ShowFooter="True"> <Columns> <telerik:GridBoundColumn SortExpression="Description" HeaderText="Item" HeaderButtonType="TextButton" DataField="Description" UniqueName="Description" /> <telerik:GridBoundColumn SortExpression="Price" HeaderText="Price" HeaderButtonType="TextButton" DataField="Price" UniqueName="Price" DataFormatString="{0:C}" /> <telerik:GridBoundColumn SortExpression="OverridePrice" HeaderText="Override Price" HeaderButtonType="TextButton" DataField="OverridePrice" UniqueName="OverridePrice" DataFormatString="{0:C}" /> <telerik:GridBoundColumn SortExpression="Quantity" HeaderText="Quantity" HeaderButtonType="TextButton" DataField="Quantity" UniqueName="Quantity" /> <telerik:GridBoundColumn SortExpression="LineItemTotalAllowable" HeaderText="Allowable" FooterText="Allowable Total: " HeaderButtonType="TextButton" DataField="LineItemTotalAllowable" UniqueName="LineItemTotalAllowable" Aggregate="Sum" DataFormatString="{0:C}" /> <telerik:GridBoundColumn SortExpression="LineItemTotalUnallowable" HeaderText="Unallowable" FooterText="Unallowable Total: " HeaderButtonType="TextButton" DataField="LineItemTotalUnallowable" UniqueName="LineItemTotalUnallowable" Aggregate="Sum" DataFormatString="{0:C}" /> <telerik:GridBoundColumn SortExpression="LineItemTotal" HeaderText="Totals" FooterText="Order Total: " HeaderButtonType="TextButton" DataField="LineItemTotal" UniqueName="LineItemTotal" Aggregate="Sum" DataFormatString="{0:C}" /> </Columns> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn" /> <telerik:GridBoundColumn SortExpression="ID" HeaderText="Order ID" HeaderButtonType="TextButton" DataField="ID" UniqueName="ID" ReadOnly="true" /> <telerik:GridBoundColumn SortExpression="Cost" HeaderText="Cost" HeaderButtonType="TextButton" DataField="Cost" UniqueName="Cost" DataFormatString="{0:C}" ReadOnly="true" /> <telerik:GridCheckBoxColumn SortExpression="Cancelled" HeaderText="Cancelled" HeaderButtonType="TextButton" DataField="Cancelled" UniqueName="Cancelled" /> <telerik:GridBoundColumn SortExpression="Timestamp" HeaderText="Timestamp" HeaderButtonType="TextButton" DataField="Timestamp" UniqueName="Timestamp" ReadOnly="true" /> </Columns> <NoRecordsTemplate> <p class="status">There are no orders for this registration.</p> </NoRecordsTemplate> <EditFormSettings EditFormType="Template"> <FormTemplate> <asp:ObjectDataSource ID="odsRequiredCatalogList" runat="server" SelectMethod="dsCatalogList" TypeName="WorkshopsLibrary.CRegistration"> <SelectParameters> <asp:SessionParameter Name="sUserID" SessionField="UserID" Type="String" /> <asp:ControlParameter Name="sRegistrationTypeID" ControlID="hidRegistrationTypeID" Type="String" /> <asp:Parameter Name="bRequired" DefaultValue="True" Type="Boolean" /> <asp:SessionParameter Name="sWorkshopID" SessionField="AdminWorkshopID" Type="String" /> </SelectParameters> </asp:ObjectDataSource> <p>Please choose one of the registration options below.</p> <asp:RadioButtonList ID="rblRequiredRegistration" runat="server" DataSourceID="odsRequiredCatalogList" DataValueField="ID" DataTextField="Description" AutoPostBack="true"> </asp:RadioButtonList> <asp:RequiredFieldValidator ID="rfvRequiredRegistration" ControlToValidate="rblRequiredRegistration" runat="server" ErrorMessage=" * Required" CssClass="required" /> <br /> Price: <asp:TextBox ID="txtPrice" runat="server"></asp:TextBox> <br /> <asp:ObjectDataSource ID="odsCatalogList" runat="server" SelectMethod="dsCatalogList" TypeName="WorkshopsLibrary.CRegistration"> <SelectParameters> <asp:SessionParameter Name="sUserID" SessionField="UserID" Type="String" /> <asp:ControlParameter Name="sRegistrationTypeID" ControlID="hidRegistrationTypeID" Type="String" /> <asp:Parameter Name="bRequired" DefaultValue="False" Type="String" /> <asp:SessionParameter Name="sWorkshopID" SessionField="AdminWorkshopID" Type="String" /> </SelectParameters> </asp:ObjectDataSource> <asp:GridView ID="gvAddOns" runat="server" DataSourceID="odsCatalogList" AutoGenerateColumns="False" CellPadding="8" GridLines="None" DataKeyNames="ID" OnRowDataBound="gvAddOns_RowDataBound"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="chkItem" runat="server" /> </ItemTemplate> <HeaderStyle Width="30px" /> </asp:TemplateField> <asp:BoundField DataField="Description" HeaderText="Item" HeaderStyle-HorizontalAlign="Left" /> <asp:TemplateField HeaderText="Quantity"> <ItemTemplate> <asp:TextBox ID="txtQuantity" runat="server" Width="30px" MaxLength="4" /> </ItemTemplate> <HeaderStyle Width="30px" /> </asp:TemplateField> <asp:TemplateField HeaderText="Price"> <ItemTemplate> <asp:TextBox ID="txtPrice" runat="server" Width="80px" /> </ItemTemplate> <HeaderStyle Width="80px" /> </asp:TemplateField> </Columns> </asp:GridView> <asp:Label ID="lblStatus" runat="server" CssClass="required" Visible="false" /> <asp:Button ID="cmdAdd" runat="server" Text="Save" CommandName="PerformInsert" /> </FormTemplate> </EditFormSettings> </MasterTableView> </telerik:RadGrid> <asp:ObjectDataSource ID="odsOrderList" runat="server" SelectMethod="dsOrderListByRID" TypeName="WorkshopsLibrary.CRegistration"> <SelectParameters> <asp:SessionParameter Name="UserID" SessionField="UserID" Type="String" /> <asp:ControlParameter Name="RegistrationID" ControlID="hidRegistrationID" Type="String" /> <asp:SessionParameter Name="WorkshopID" SessionField="AdminWorkshopID" Type="String" /> </SelectParameters> </asp:ObjectDataSource> <asp:ObjectDataSource ID="odsOrderSummaryList" runat="server" SelectMethod="dsOrderSummaryList" TypeName="WorkshopsLibrary.CRegistration"> <SelectParameters> <asp:SessionParameter Name="UserID" SessionField="UserID" Type="String" /> <asp:Parameter Name="OrderID" Type="String" /> <asp:SessionParameter Name="WorkshopID" SessionField="AdminWorkshopID" Type="String" /> </SelectParameters> </asp:ObjectDataSource> </asp:Panel>0
Hello Pradeep,
Sorry for having sent you the wrong syntax for the addition of the event handler. The correct one in VB.NET is:
Hope this will finally fix the exception at hand.
Regards,
Tsvetoslav
the Telerik team
Sorry for having sent you the wrong syntax for the addition of the event handler. The correct one in VB.NET is:
AddHandler gvOrders.ItemInserted, AddressOf gvOrders_ItemInsertedHope this will finally fix the exception at hand.
Regards,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 14 Oct 2010, 02:31 PM
Hello again,
Thank you. That code cleared up my exception...but the gvOrders_ItemInserted method is still never being called so it does not remain in edit mode. I tried adding the OnItemInserted="gvOrders_ItemInserted" to the grid and that didn't help either.
When would it reach the ItemInserted method? When it the item considered inserted? Is it after the InsertCommand method is executed? I am getting that far. It executes the InsertCommand method but never hits the ItemInserted method.
Thanks,
Steve
Thank you. That code cleared up my exception...but the gvOrders_ItemInserted method is still never being called so it does not remain in edit mode. I tried adding the OnItemInserted="gvOrders_ItemInserted" to the grid and that didn't help either.
When would it reach the ItemInserted method? When it the item considered inserted? Is it after the InsertCommand method is executed? I am getting that far. It executes the InsertCommand method but never hits the ItemInserted method.
Thanks,
Steve
0
Hi Stephen,
The ItemInserted event is thrown only if the item is inserted. It happens always after the InsertCommand : the InsertCommand event marks the beginning of the operation and the ItemInserted one - its successful end. Please, check if your item is inserted all right into the underlying data store - I suspect this must be the reason.
Regards,
Tsvetoslav
the Telerik team
The ItemInserted event is thrown only if the item is inserted. It happens always after the InsertCommand : the InsertCommand event marks the beginning of the operation and the ItemInserted one - its successful end. Please, check if your item is inserted all right into the underlying data store - I suspect this must be the reason.
Regards,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 20 Oct 2010, 06:27 PM
Hello,
Well that sort of explains the issue I am having. Here is the code of my InsertCommand:
Since I am using custom code to perform the insert, do I need to return something to show that the item was successfully inserted because the ItemInserted is never fired, even when the item was successfully inserted.
But what I am trying to do actually is keep it in edit mode when it fails on my CustomValidation method that is called within the InsertCommand shown above.
thanks,
Steve
Well that sort of explains the issue I am having. Here is the code of my InsertCommand:
Private Sub gvOrders_InsertCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles gvOrders.InsertCommand If e.CommandName = RadGrid.PerformInsertCommandName Then If CustomValidation(e) Then Dim cRegistration As New CRegistration Dim iRet As Integer Dim bRet As Boolean = False Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem) iRet = cRegistration.AddOrder(HttpContext.Current.Session("UserID").ToString, hidRegistrationID.Value, HttpContext.Current.Session("AdminWorkshopID").ToString) Dim rblRequiredRegistration As RadioButtonList = CType(editedItem.FindControl("rblRequiredRegistration"), RadioButtonList) Dim txtPrice As TextBox = CType(editedItem.FindControl("txtPrice"), TextBox) Dim gvAddOns As GridView = CType(editedItem.FindControl("gvAddOns"), GridView) If iRet > 0 Then bRet = cRegistration.AddUpOrderItemOverride(HttpContext.Current.Session("UserID").ToString, _ iRet.ToString, _ rblRequiredRegistration.SelectedValue, _ "1", _ txtPrice.Text) If bRet Then For Each row As GridViewRow In gvAddOns.Rows Dim chkItem As CheckBox = CType(row.FindControl("chkItem"), CheckBox) Dim txtQuantity As TextBox = CType(row.FindControl("txtQuantity"), TextBox) Dim txtAddOnPrice As TextBox = CType(row.FindControl("txtPrice"), TextBox) If chkItem IsNot Nothing AndAlso chkItem.Checked Then bRet = cRegistration.AddUpOrderItemOverride(HttpContext.Current.Session("UserID").ToString, _ iRet.ToString, _ gvAddOns.DataKeys(row.RowIndex).Value.ToString, _ txtQuantity.Text, _ txtAddOnPrice.Text) If Not bRet Then Exit For End If End If Next If bRet Then gvOrders.DataBind() Else gvOrders.Controls.Add(New LiteralControl("<strong>Save add-ons failed!</strong>")) End If Else gvOrders.Controls.Add(New LiteralControl("<strong>Save registration failed!</strong>")) End If Else gvOrders.Controls.Add(New LiteralControl("<strong>Add Order failed!</strong>")) End If End If End IfEnd SubSince I am using custom code to perform the insert, do I need to return something to show that the item was successfully inserted because the ItemInserted is never fired, even when the item was successfully inserted.
But what I am trying to do actually is keep it in edit mode when it fails on my CustomValidation method that is called within the InsertCommand shown above.
thanks,
Steve
0
Hi Stephen,
The ItemInserted event is designed to work only with DataSource controls when those are connected to the grid. In other words, it is just a convenience that lets the developer know whether the DataSource control has performed the CRUD operation successfully or not.
However, when you are performing the CRUD operations manually as in your case you do not have a need for the ItemInserted event as you directly know whether you have inserted the new item into the collection or not. That is, the moment you call cRegistration.AddUpOrderItemOverride or cRegistration.AddOrder you know that the item has been inserted. If you are afraid that some exception might be thrown by those custom methods, you might surround their call location with a try and catch block. If the catch block is hit, then you will know that something has gone wrong and can take action accordingly.
Greetings,
Tsvetoslav
the Telerik team
The ItemInserted event is designed to work only with DataSource controls when those are connected to the grid. In other words, it is just a convenience that lets the developer know whether the DataSource control has performed the CRUD operation successfully or not.
However, when you are performing the CRUD operations manually as in your case you do not have a need for the ItemInserted event as you directly know whether you have inserted the new item into the collection or not. That is, the moment you call cRegistration.AddUpOrderItemOverride or cRegistration.AddOrder you know that the item has been inserted. If you are afraid that some exception might be thrown by those custom methods, you might surround their call location with a try and catch block. If the catch block is hit, then you will know that something has gone wrong and can take action accordingly.
Greetings,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 26 Oct 2010, 04:40 PM
Hello,
Ok that sounds like a plan, my only question now is when I am catching the exception of my custom AddOrder method within the grid InsertCommand method, how do I do the KeepInInsertMode so my edit form doesn't close? The KeepInInsertMode is not a member of GridCommandEventArgs.
thanks,
Steve
Ok that sounds like a plan, my only question now is when I am catching the exception of my custom AddOrder method within the grid InsertCommand method, how do I do the KeepInInsertMode so my edit form doesn't close? The KeepInInsertMode is not a member of GridCommandEventArgs.
thanks,
Steve
0
Hello Stephen,
You need to use to set e.Canceled = true as this will effectively keep the insert form open and prevent the grid from rebinding.
Hope it helps.
All the best,
Tsvetoslav
the Telerik team
You need to use to set e.Canceled = true as this will effectively keep the insert form open and prevent the grid from rebinding.
Hope it helps.
All the best,
Tsvetoslav
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
Stephen
Top achievements
Rank 1
answered on 26 Oct 2010, 06:54 PM
YES!! That did it thank you!!!
0
Jonx
Top achievements
Rank 2
answered on 26 Nov 2010, 02:07 AM
So cool. Exactly what I needed. It took me so long to fid it that I add it here for the record ;)
"telerik Asp.net radgrid popup stay open after exception" :
"telerik Asp.net radgrid popup stay open after exception" :
protected void RadGrid1_InsertCommand(object sender, GridCommandEventArgs e){ try { GridEditableItem item = e.Item as GridEditableItem; Hashtable values = new Hashtable(); item.ExtractValues(values); Session session = new Session(); item.UpdateValues(session); DbContext.AddToSessions(session); //submit chanages to Db DbContext.SaveChanges(); } catch (System.Exception) { e.Canceled = true; //keep the popup open ShowErrorMessage(); }}