<telerik.web.ui> <radCompression> <excludeHandlers> <add handlerPath="LaunchLink.aspx" matchExact="false"/> <add handlerPath="LaunchExternalSite.aspx" matchExact="false/> </excludeHandlers> </radCompression> </telerik.web.ui>Hello everybody,
I have encountered a problem in dealing with Radgrid,I have a aspx page with 3 UserControl inside of the page.This UserControls will be added at runtime(each in a tabstrip) and within the controls I have a Radgrid which have my ownn Custom logic and Insert,update and delete have been done in code-behind.
when I do Insert, it is perfect but when i refresh the page after doing insert,the InsertCommand of my RadGrid will be Fired again and insert the same record again.
Here is my Source Code
protected
void RadGridPanel_InsertCommand(object sender, GridCommandEventArgs e) { GridEditFormInsertItem insertItem = e.Item as GridEditFormInsertItem; GridEditableItem item = e.Item as GridEditableItem; tbl_Panel _tbl_Panel = new tbl_Panel(); item.UpdateValues(_tbl_Panel); DbContext_Panel.AddTotbl_Panel(_tbl_Panel); DbContext_Panel.SaveChanges(); }
<telerik:RadGrid ID="RadGridPanel" CssClass="myRadGrid" GridLines="None" runat="server" AllowAutomaticDeletes="True" PageSize="4" AllowPaging="True" AutoGenerateColumns="False" OnItemUpdated="RadGridPanel_ItemUpdated" OnItemDeleted="RadGridPanel_ItemDeleted" OnItemInserted="RadGridPanel_ItemInserted" OnDataBound="RadGridPanel_DataBound" AllowFilteringByColumn="True" OnItemCreated="RadGridPanel_ItemCreated" oninsertcommand="RadGridPanel_InsertCommand" OnUpdateCommand="RadGridPanel_UpdateCommand" OnNeedDataSource="RadGridPanel_NeedDataSource" oneditcommand="RadGridPanel_EditCommand" onitemdatabound="RadGridPanel_ItemDataBound" ondeletecommand="RadGridPanel_DeleteCommand" > <%--<PagerStyle Mode="NextPrevAndNumeric" />--%> <SelectedItemStyle Font-Names="Tahoma" Font-Size="11px" ForeColor="#8abe23" /> <MasterTableView Width="100%" CommandItemDisplay="TopAndBottom" DataKeyNames="PanelId" HorizontalAlign="NotSet" AutoGenerateColumns="False" Font-Names="Tahoma" EditMode="InPlace" EditFormSettings-FormStyle-ForeColor="Black" Font-Size="11px"> <CommandItemTemplate> <div style="padding: 5px 5px;" dir="rtl"> <asp:LinkButton ID="LinkButton2" runat="server" Font-Names="Tahoma" CommandName="InitInsert" Visible='<%# !RadGridPanel.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" src="../Images/Icons/AddRecord.gif" />اضافه كردن ركورد جديد</asp:LinkButton> <asp:LinkButton ID="LinkButton4" runat="server" Font-Names="Tahoma" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="../Images/Icons/Refresh.gif" />به روزآوري اطلاعات</asp:LinkButton> </div> </CommandItemTemplate> <Columns> <telerik:GridEditCommandColumn ButtonType="ImageButton" UniqueName="EditCommandColumn"> <ItemStyle CssClass="MyImageButton" /> </telerik:GridEditCommandColumn> <telerik:GridButtonColumn ConfirmText="آيا از حذف ركورد جاري مطمئنيد؟" ConfirmDialogType="RadWindow" ConfirmTitle="حذف ركورد جاري" ButtonType="ImageButton" CommandName="Delete" Text="حذف" UniqueName="DeleteColumn"> <ItemStyle HorizontalAlign="Center" CssClass="MyImageButton" /> </telerik:GridButtonColumn> <telerik:GridBoundColumn DataField="PanelName" HeaderText="پنل " SortExpression="PanelName" UniqueName="PanelName" ColumnEditorID="GridTextBoxColumnPanelName"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Address" Display="False" EditFormColumnIndex="2" HeaderText=" آدرس " SortExpression="Address" UniqueName="Address" ColumnEditorID="GridTextBoxColumnAddress"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Tellphone" HeaderText="تلفن " SortExpression="Tellphone" UniqueName="Tellphone" ColumnEditorID="GridTextBoxColumnTellphone"> </telerik:GridBoundColumn> <telerik:GridDropDownColumn DataField="SiteOwnerId" EditFormColumnIndex="0" HeaderText="شركت" UniqueName="SiteOwnerId" ListTextField="SiteOwnerName" ListValueField="SiteOwnerId" ColumnEditorID="GridDropDownColumnSiteOwnerId"> </telerik:GridDropDownColumn> </Columns> <EditFormSettings ColumnNumber="3" CaptionDataField="PanelName" CaptionFormatString="ويرايش اطلاعات" InsertCaption="" > <FormTableItemStyle Wrap="True" ></FormTableItemStyle> <FormCaptionStyle CssClass="EditFormHeader"></FormCaptionStyle> <FormMainTableStyle GridLines="None" CellSpacing="0" CellPadding="3" Width="100%" /> <FormTableStyle CellSpacing="0" CellPadding="2" Height="110px" Font-Names="Tahoma" /> <FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle> <EditColumn ButtonType="ImageButton" InsertText="ثبت پنل" UpdateText="ويرايش پنل" UniqueName="EditCommandColumn1" CancelText="لغو ويرايش"> </EditColumn> <FormTableButtonRowStyle HorizontalAlign="Right" CssClass="EditFormButtonRow"></FormTableButtonRowStyle> </EditFormSettings> </MasterTableView> <ClientSettings> <ClientEvents OnRowDblClick="RowDblClick" /> </ClientSettings> </telerik:RadGrid>
I am working int he databound event trying to get the datakey value of my grid to populate my nestedview. I have a tope level grid then a subgrid and then a nestedview of this. how can i get the datakey of the second level grid to populate the nestedview values. I have tried this but no joy give me an error
item.OwnerTableView.DataKeyValues(item.ItemIndex)("intPositionId").ToString
Protected Sub myGridDeploy_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles myGridDeploy.ItemDataBound
If TypeOf e.Item Is GridNestedViewItem Then
Dim item As GridNestedViewItem = DirectCast(e.Item, GridNestedViewItem)
sql = "Select mp.strSSN, si.FullName, si.strRank, si.Age, si.strPmos, si.strSmos, si.POSN_NBR_EXCESS_IND, si.SCTY_CLNC, si.ETS, si.strStatus, si.PHYS_PRFL_SER, si.intYearSvc, si.SRPDate, Deployable, si.Email " _
& "From tblPersonnel as mp LEFT JOIN vw_PersonrInfo as si on si.strSSN = mp.strSSN where intPositionId = " & item.OwnerTableView.DataKeyValues(item.ItemIndex)("intPositionId").ToString
myDataTable = New DataTable
myDataTable = getData(sql)
TryCast(item.FindControl("lblPerson"), Label).Text = myDataTable.Rows(0)(1)
TryCast(item.FindControl("lblRank"), Label).Text = myDataTable.Rows(0)(2
TryCast(item.FindControl("lblAge"), Label).Text = myDataTable.Rows(0)(3)
TryCast(item.FindControl("lblPmos"), Label).Text = myDataTable.Rows(0)(4)
If IsDBNull(myDataTable.Rows(0)(5)) Then
myDataTable.Rows(0)(5) = "None"
End If
TryCast(item.FindControl("lblSmos"), Label).Text = myDataTable.Rows(0)(5)
TryCast(item.FindControl("lblPosn"), Label).Text = myDataTable.Rows(0)(6)
TryCast(item.FindControl("lblClear"), Label).Text = myDataTable.Rows(0)(7)
TryCast(item.FindControl("lblEts"), Label).Text = myDataTable.Rows(0)(8)
TryCast(item.FindControl("lblFullTime"), Label).Text = myDataTable.Rows(0)(9)
TryCast(item.FindControl("lblPuhles"), Label).Text = myDataTable.Rows(0)(10)
TryCast(item.FindControl("lblYrsActive"), Label).Text = myDataTable.Rows(0)(11)
If IsDBNull(myDataTable.Rows(0)(12)) Then
myDataTable.Rows(0)(12) = "None"
End If
TryCast(item.FindControl("lblDtSrp"), Label).Text = myDataTable.Rows(0)(12)
TryCast(item.FindControl("lblDeplyable"), Label).Text = myDataTable.Rows(0)(13)
TryCast(item.FindControl("lblEmail"), Label).Text = myDataTable.Rows(0)(14)
End If
End Sub
What I have is a grid that contains a subgrid and then a nested view in the subgrid. I am trying to get a hold of the datakey of the subgrid to populate the nestedview automatically, Right now I have a static Id in the code to make sure it works but need to get the dynamic Id. This was given to me before but did not work. I got an error with it. how can I get a hold of the datakey for the sub grid to populate the nested view of the subgrid.
Protected Sub RadGrid1_ItemDataBound(sender As Object, e As GridItemEventArgs) If TypeOf e.Item Is GridDataItem Then Dim innergrid As RadGrid = DirectCast(sender, RadGrid) Dim nesteditem As GridNestedViewItem = DirectCast(innergrid.NamingContainer, GridNestedViewItem) Dim parentItem As GridDataItem = DirectCast(nesteditem.ParentItem, GridDataItem) Dim Id As String = parentItem.GetDataKeyValue("PositionId").ToString() End IfEnd SubDescription: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
|
Protected Sub myGridDeploy_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles myGridDeploy.ItemDataBound
If TypeOf e.Item Is GridDataItem Then
Dim innergrid As RadGrid = DirectCast(sender, RadGrid)
Dim nesteditem As GridNestedViewItem = DirectCast(innergrid.NamingContainer, GridNestedViewItem)
Dim parentItem As GridDataItem = DirectCast(nesteditem.ParentItem, GridDataItem)
Dim Id As String = parentItem.GetDataKeyValue("PositionId").ToString()
End If
If TypeOf e.Item Is GridNestedViewItem Then
Dim item As GridNestedViewItem = DirectCast(e.Item, GridNestedViewItem)
sql = "Select mp.strSSN, si.FullName, si.strRank, si.Age, si.strPmos, si.strSmos, si.POSN_NBR_EXCESS_IND, si.SCTY_CLNC, si.ETS, si.strStatus, si.PHYS_PRFL_SER, si.intYearSvc, si.SRPDate, Deployable, " _
& "Case when mp.intDMOSQ = 1 then 'YES' ELSE 'NO' END intDMOSQ, si.Email " _
& "From tblMobUnitPersonnel as mp LEFT JOIN vw_SoldierInfo as si on si.strSSN = mp.strSSN where intPositionId = " & Id
myDataTable = New DataTable
myDataTable = getData(sql)
TryCast(item.FindControl("lblPersonnel"), Label).Text = myDataTable.Rows(0)(1)
TryCast(item.FindControl("lblRank"), Label).Text = myDataTable.Rows(0)(2)
TryCast(item.FindControl("lblAge"), Label).Text = myDataTable.Rows(0)(3)
TryCast(item.FindControl("lblPmos"), Label).Text = myDataTable.Rows(0)(4)
If IsDBNull(myDataTable.Rows(0)(5)) Then
myDataTable.Rows(0)(5) = "None"
End If
TryCast(item.FindControl("lblSmos"), Label).Text = myDataTable.Rows(0)(5)
TryCast(item.FindControl("lblPosn"), Label).Text = myDataTable.Rows(0)(6)
TryCast(item.FindControl("lblClear"), Label).Text = myDataTable.Rows(0)(7)
TryCast(item.FindControl("lblEts"), Label).Text = myDataTable.Rows(0)(8)
TryCast(item.FindControl("lblFullTime"), Label).Text = myDataTable.Rows(0)(9)
TryCast(item.FindControl("lblPuhles"), Label).Text = myDataTable.Rows(0)(10)
TryCast(item.FindControl("lblYrsActive"), Label).Text = myDataTable.Rows(0)(11)
If IsDBNull(myDataTable.Rows(0)(12)) Then
myDataTable.Rows(0)(12) = "None"
End If
TryCast(item.FindControl("lblDtSrp"), Label).Text = myDataTable.Rows(0)(12)
TryCast(item.FindControl("lblDeplyable"), Label).Text = myDataTable.Rows(0)(13)
TryCast(item.FindControl("lblDMOSQ"), Label).Text = myDataTable.Rows(0)(14)
TryCast(item.FindControl("lblEmail"), Label).Text = myDataTable.Rows(0)(15)
End If
End Sub
<telerik:GridTemplateColumn HeaderText="Action" UniqueName="tplColAction"> <ItemTemplate> <asp:Panel ID="pnlActionStatut" runat="server" HorizontalAlign="left"> </asp:Panel> </ItemTemplate> </telerik:GridTemplateColumn>protected void rdGridOpportunite_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item.ItemType != GridItemType.Item && e.Item.ItemType != GridItemType.AlternatingItem) return; //Get Object Entity OpportuniteEntity opp = e.Item.DataItem as OpportuniteEntity; if (opp == null) return; //Get Panel Control pnl = e.Item.FindControl("pnlActionStatut"); if (!(pnl is Panel)) return; //Get All statut associate of this statut List<TypeStatutOpportuniteEntity> statuts = TypeManager.GetStatutAssocieOfStatut(opp.TypeStatut.IDType, Profile.InstanceID).ToList(); if (statuts.Count == 0) return; LinkButton lbAction; //Create LinkButton for each Statut statuts.ForEach(s => { lbAction = new LinkButton(); lbAction.Text = "--> " + s.Libelle; lbAction.Click += new EventHandler(lbAction_Click); lbAction.CommandArgument = string.Format("{0};{1}", opp.ID, s.IDType); lbAction.ID = string.Format("lnkBtn{0}{1}", opp.ID, s.IDType); pnl.Controls.Add(lbAction); pnl.Controls.Add(new Label() { Text = "<br />" }); } ); }