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
If
End
Sub
Description: 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
/>" });
}
);
}
<telerik:RadGrid ID="radGridListTypeRoom" runat="server" AllowPaging="false" Width="100%" AutoGenerateColumns="false" OnDetailTableDataBind="radGridListTypeRoom_DetailTableDataBind"> <MasterTableView DataKeyNames="hotelRoomTypeId" DataMember="MasterGrid" Name="TypeRoom" Width="100%"> <DetailTables> <telerik:GridTableView DataKeyNames="hotelRoomTypeId" Name="DetailPrice" Width="100%"> <Columns> <telerik:GridTemplateColumn HeaderText="Username"> <ItemTemplate> <asp:Label ID="lblName" runat="server" Text='<%# Bind("name") %>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </telerik:GridTableView></DetailTables> <Columns> <telerik:GridBoundColumn DataField="name" HeaderText="Tipo di stanza"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="isAvailable" HeaderText="Disponibilità"> </telerik:GridBoundColumn> </Columns> </MasterTableView> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> </telerik:RadGrid>
radGridListTypeRoom.DataSource = hotel.RoomTypes; radGridListTypeRoom.DataBind();
protected void radGridListTypeRoom_DetailTableDataBind(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e) { GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem; RoomType roomType = (RoomType)dataItem.DataItem; switch (e.DetailTableView.Name) { case "DetailPrice": { break; } } }
<
telerik:RadRotator
ID
=
"thumbRotator"
runat
=
"server"
RotatorType
=
"Buttons"
WrapFrames
=
"false"
FrameDuration
=
"1"
ScrollDirection
=
"Up, Down"
OnItemClick
=
"thumbRotator_ItemClick"
EnableEmbeddedSkins
=
"false"
Skin
=
"FAPortalRotator"
CssClass
=
"rotatorVertical"
ItemWidth
=
"300px"
ItemHeight
=
"225px"
>
<
ItemTemplate
>
<
asp:Image
ID
=
"chartImage"
runat
=
"server"
AlternateText
=
"Image"
ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImageURL")%>'
CssClass="thumbnail" />
</
ItemTemplate
>
<
ControlButtons
LeftButtonID
=
"img_left"
RightButtonID
=
"img_right"
/>
</
telerik:RadRotator
>