I am having issue in my Rad Grid.When Try to add the new item using command item template.
I am getting the error message "Unable to cast object of type 'Telerik.Web.UI.GridCommanditem' to 'Telerik.Web.UI.GridEditableItem' "
When trying to add the new item or user from command item template.
Need help
My client side code is
<
telerik:RadGrid ID="RadGrid1" CssClass="RadGrid" EnableTheming="False" EnableEmbeddedBaseStylesheet="False" AllowSorting="True" AllowMultiRowSelection="true" AllowMultiRowEdit="true"
runat="server" Width="98%" AllowPaging="True" AutoGenerateColumns="False" PageSize="5" AllowAutomaticDeletes="True" >
<ItemStyle CssClass="RadGridItem"></ItemStyle>
<HeaderStyle CssClass="RadGridHeader"></HeaderStyle>
<PagerStyle Mode="Slider" alwaysvisible="True" pagebuttoncount="5" CssClass="RadGridPager"></PagerStyle>
<ClientSettings EnablePostBackOnRowClick="false">
<Selecting AllowRowSelect="true" />
</ClientSettings>
<MasterTableView CommandItemDisplay="Top" DataKeyNames="SUserID" EditMode="InPlace" AutoGenerateColumns="False" Width="100%">
<CommandItemTemplate>
<div style="padding:10px 0px;" class="newtd">
<table cellpadding ="0" cellspacing ="0" border ="0" width ="100%">
<tr>
<td style="padding-left:5px"> Filter : </td>
<td> <asp:TextBox autocomplete="off" ID="txtSearch" runat="server" OnTextChanged="txtSearch_TextChanged"></asp:TextBox> </td>
<td style="padding-left:40px"><telerik:RadCombobox ID="rcbFieldName" runat="server" Skin="WebBlue" AllowCustomText="True" width="140px" EmptyMessage="-------Select-------" CausesValidation="false">
<Items>
<telerik:RadComboBoxItem Text="Email" Value="Email" />
</Items>
</telerik:RadCombobox> </td>
<td align ="left" style="padding-right:40px">
<asp:ImageButton ID="btnSearch" runat="server" CommandName="btnSearch" ImageUrl="~/Images/icons/Zoom.gif" ImageAlign="Bottom" CausesValidation="false"/>
</td>
<td align="right" style="padding:10px;" valign="middle">
<asp:LinkButton Style="vertical-align: bottom" ID="btnEditSelected" runat="server"
CommandName="EditSelected" CausesValidation="false" Visible='<%# RadGrid1.EditIndexes.Count = 0 %>' ><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Edit.gif" /> Edit Selected PowerAdmin</asp:LinkButton>
<asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# RadGrid1.EditIndexes.Count > 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Save.gif" /> Update PowerAdmin</asp:LinkButton>
<asp:LinkButton ID="btnInsert" runat="server" CommandName="InitInsert" Visible='<%# Not RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Add.gif" /> Add new PowerAdmin</asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" CommandName="PerformInsert" Visible='<%# RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Add.gif" /> Add this PowerAdmin</asp:LinkButton>
<asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" CausesValidation="false" Visible='<%# RadGrid1.EditIndexes.Count > 0 Or RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Cancel.gif" /> Cancel</asp:LinkButton>
<asp:LinkButton ID="LinkButton1" OnClientClick="javascript:return confirm('Are You Sure ?');"
runat="server" CommandName="DeleteSelected" CausesValidation="false" ><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Delet.gif" /> Delete Selected PowerAdmin</asp:LinkButton>
<asp:LinkButton ID="LinkButton4" runat="server" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="../Images/icons/Refresh.gif" /> Refresh </asp:LinkButton>
</td>
</tr>
</table>
</div>
</CommandItemTemplate>
<Columns>
<telerik:GridTemplateColumn UniqueName="SrlNo" AllowFiltering="False" ItemStyle-HorizontalAlign="Left" ItemStyle-Width="2%" >
<ItemTemplate >
<asp:Label ID="lblSrlNo" runat="server" />
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridClientSelectColumn HeaderStyle-Width="3%" />
<telerik:GridBoundColumn DataField="SUserID" UniqueName="SUserID" Visible="False" ReadOnly="True"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Email" UniqueName="Email" SortExpression="Email" HeaderText="Email" ShowSortIcon="False" >
<ItemStyle HorizontalAlign="Left" />
</telerik:GridBoundColumn>
<telerik:GridTemplateColumn UniqueName="Password" HeaderText="Password" >
<ItemTemplate>
<asp:HyperLink ID="hplReset" style="cursor:pointer" runat="server" OnClick='<%# "fn_Change(this," & Eval("SUserId","{0:#}") & ")" %>'
Text="Reset">
</asp:HyperLink>
</ItemTemplate>
<EditItemTemplate >
<asp:HyperLink ID="hplReset1" style="cursor:pointer" runat="server" OnClick='<%# "fn_Change(this," & Eval("SUserId","{0:#}") & ")" %>' Text="Reset"></asp:HyperLink>
<asp:Label ID="lblpwd" runat="server" Visible="false" Text="Enter Password" ></asp:Label><font color="red" >*</font>: <asp:TextBox ID="txtpwd" runat="server" Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
ControlToValidate="txtpwd" ErrorMessage="Enter Password" runat="server" ></asp:RequiredFieldValidator>
<asp:Label ID="lblrepwd" runat="server" Visible="false" Text="Retype Password" ></asp:Label><font color="red" >*</font>: <asp:TextBox ID="txtrepwd" runat="server" Visible="false"></asp:TextBox>
<asp:RequiredFieldValidator ID="reqretypepassword"
ControlToValidate="txtrepwd" ErrorMessage="Re-Type Password" runat="server" ></asp:RequiredFieldValidator>
</EditItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn DataField="UserStatus" UniqueName="UserStatus" HeaderButtonType="TextButton" HeaderText="UserStatus" ><ItemTemplate>
<asp:Label ID="lblStatus" runat="server" text='<%# IIf(Trim(""& Eval("UserStatus"))= 0,"Enabled","Disabled") %>' />
</ItemTemplate>
<EditItemTemplate >
<div id="checkstatus">
<asp:RadioButton GroupName="grpuserstatus" runat="server" ID="checkDisable" text="Disabled" Checked='<%# IIf(Val(""& Eval("UserStatus"))= 0,"False","True") %>'/>
<asp:RadioButton GroupName="grpuserstatus" runat="server" ID="checkEnable" text="Enabled" Checked='<%# IIf(Val(""& Eval("UserStatus"))= 0,"True","False") %>'/>
</div>
</EditItemTemplate>
<ItemStyle HorizontalAlign="Left" />
</telerik:GridTemplateColumn>
<telerik:GridEditCommandColumn UniqueName="Editcolumn"/>
</Columns>
<EditFormSettings >
<FormTableItemStyle Wrap="False"></FormTableItemStyle>
<FormCaptionStyle CssClass="RadGridHeader"></FormCaptionStyle>
<FormMainTableStyle BackColor="White" GridLines="Horizontal" CellPadding="3" Width="100%" CellSpacing="0"></FormMainTableStyle>
<FormTableStyle CellSpacing="0" CellPadding="2" CssClass="module" Height="110px" BackColor="White" />
<FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle>
<EditColumn CancelText="Cancel edit" InsertText="Insert Order" UniqueName="EditCommandColumn1" ButtonType="ImageButton" UpdateText="Update record">
</EditColumn>
<FormTableButtonRowStyle HorizontalAlign="Right" CssClass="EditFormButtonRow"></FormTableButtonRowStyle>
<FormTemplate>
<table cellpadding="3" cellspacing="0" width="98%" border="0">
<tr><td style="height:20px;"></td></tr>
<tr>
<td align="right" width="40%" >Email <font color="red" >*</font>: </td>
<td align="left" width="60%" ><asp:TextBox ID="txtEmail" runat="server" ></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtEmail"
Display="Dynamic" CssClass="errormsg" ErrorMessage="Enter Email"></asp:RequiredFieldValidator><asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtEmail"
Display="Dynamic" CssClass="errormsg" ErrorMessage="Invalid Email" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator></td>
</tr>
<tr><td>
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr><td align="right" width="20%">Password <font color="red" >*</font>: </td>
<td align="left" width="80%" ><asp:TextBox ID="txtPassword" TextMode="Password" runat="server" MaxLength="10" ></asp:TextBox><asp:RequiredFieldValidator Enabled="false"
ID="reqPassword" runat="server" CssClass="errormsg" ControlToValidate="txtPassword" Display="Dynamic" ErrorMessage="Enter Password"></asp:RequiredFieldValidator><asp:RegularExpressionValidator Enabled="false"
ID="regPassword" runat="server" ControlToValidate="txtPassword" CssClass="errormsg" Display="Dynamic" ErrorMessage="Invalid Password" ValidationExpression="\w{6,10}"></asp:RegularExpressionValidator></td></tr>
<tr><td align="right" width="20%">Retype Password <font color="red" >*</font>: </td>
<td align="left" width="80%" ><asp:TextBox ID="txtRePassword" TextMode="Password" runat="server" MaxLength="10" ></asp:TextBox><asp:RequiredFieldValidator Enabled="false"
ID="reqRePassword" runat="server" ControlToValidate="txtRePassword" CssClass="errormsg" Display="Dynamic" ErrorMessage="Enter Re-Type Password"></asp:RequiredFieldValidator><asp:RegularExpressionValidator Enabled="false"
ID="regRePassword" runat="server" ControlToValidate="txtRePassword" CssClass="errormsg" Display="Dynamic" ErrorMessage="Invalid Re-Type Password" ValidationExpression="\w{6,10}"></asp:RegularExpressionValidator><asp:CompareValidator
ID="cmpPassword" runat="server" ControlToCompare="txtPassword" ControlToValidate="txtRePassword" CssClass="errormsg" Display="Dynamic" ErrorMessage="Password Mismatch" Enabled="false" ></asp:CompareValidator></td></tr>
</table>
</td>
</tr>
</table>
</FormTemplate>
</EditFormSettings>
<ExpandCollapseColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<RowIndicatorColumn>
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
</MasterTableView>
<FilterMenu EnableTheming="True" Skin="WebBlue" enableembeddedbasestylesheet="False">
<CollapseAnimation Type="OutQuint" Duration="200"></CollapseAnimation>
</FilterMenu>
<AlternatingItemStyle CssClass="RadGridItem"></AlternatingItemStyle>
<SortingSettings SortToolTip="Click here to sort Email"></SortingSettings>
</telerik:RadGrid>
Server side code is :
Imports
Telerik.Web.UI
Partial
Class Clients_ManagePAdmin
Inherits System.Web.UI.Page
Dim oDB As New CMSDatabase
Dim SqlQry As String = ""
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
Dim UserTheme As MyThemes = Val(Session("@Theme"))
Me.Theme = UserTheme.ToString
Dim RadSkin As String = Replace(UserTheme.ToString, "_", "")
RadGrid1.Skin = RadSkin
'rcbFieldName.Skin = RadSkin
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Ajax.Utility.RegisterTypeForAjax(
Me.GetType)
If Not Page.IsPostBack Then
Select Case UCase(Request.QueryString("from"))
Case "ADD"
lblMsg.Text = library.GetXMLMessage(8)
Case "EDIT"
lblMsg.Text = library.GetXMLMessage(9)
Case "DELETE"
lblMsg.Text = library.GetXMLMessage(10)
End Select
End If
End Sub
<Ajax.JavascriptMethod()> _
Function updaterecords(ByVal Passs, ByVal SUserId) As Boolean
Dim SqlQry As String = "UPDATE siteusers set password='" & NDCryption.Encrypt(Passs) & "' where SUserId = " & SUserId & ""
Return oDB.ExecuteNonQuery(SqlQry)
End Function
Protected Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles RadGrid1.NeedDataSource
Dim sqlqry As String
Dim DT As New DataTable
sqlqry =
"select SUserId,Email,Password,UserStatus from siteusers where usertype= " & UserType.PowerAdmin
'sqlqry = "select SUserId,Email,Password, case UserStatus when 0 then 'true' else 'false' end as UserStatus from siteusers where usertype= " & UserType.PowerAdmin
If oDB.IsExist(sqlqry) = True Then
DT = oDB.GetDataTable(sqlqry)
RadGrid1.Visible =
True
RadGrid1.DataSource = DT
Else
RadGrid1.Visible =
False
End If
End Sub
Protected Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound
If e.Item.ItemType = GridItemType.AlternatingItem Or e.Item.ItemType = Telerik.Web.UI.GridItemType.Item Then
Dim lbl As Label
lbl =
CType(e.Item.FindControl("lblSrlNo"), Label)
lbl.Text = e.Item.ItemIndex + 1
Try
Dim lblpass As Label
lblpass =
CType(e.Item.FindControl("Password"), Label)
lblpass.Text = NDCryption.Decrypt(lblpass.Text)
If Trim(lblpass.Text) <> "" Then
lblpass.Text =
"".PadLeft(Len(lblpass.Text), "*")
End If
'Response.Write(e.Item.Cells(7).Text)
'e.Item.Cells(7).Style.Add("display", "none")
Catch ex As Exception
End Try
End If
If TypeOf e.Item Is GridEditFormItem AndAlso e.Item.IsInEditMode Then
End If
End Sub
Private Sub RadGrid1_SortCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridSortCommandEventArgs) Handles RadGrid1.SortCommand
If e.Item.OwnerTableView.DataMember = "Orders" And e.SortExpression = "Email" Then
e.Canceled =
True
Dim expression As New GridSortExpression()
expression.FieldName =
"Email"
If e.Item.OwnerTableView.SortExpressions.Count = 0 OrElse e.Item.OwnerTableView.SortExpressions(0).FieldName <> e.SortExpression Then
expression.SortOrder = GridSortOrder.Descending
ElseIf e.Item.OwnerTableView.SortExpressions(0).SortOrder = GridSortOrder.Descending Then
expression.SortOrder = GridSortOrder.Ascending
ElseIf e.Item.OwnerTableView.SortExpressions(0).SortOrder = GridSortOrder.Ascending Then
expression.SortOrder = GridSortOrder.None
End If
e.Item.OwnerTableView.SortExpressions.AddSortExpression(expression)
e.Item.OwnerTableView.Rebind()
End If
End Sub 'RadGrid1_SortCommand
Protected Sub txtSearch_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim txt As TextBox = TryCast(DirectCast(sender, TextBox), TextBox)
Dim list As RadComboBox = DirectCast(((txt.NamingContainer).FindControl("rcbFieldName")), RadComboBox)
Dim [option] As String
If list.SelectedValue = "SUserId" OrElse list.SelectedValue = "UserStatus" Then
[option] =
" = "
Else
[option] =
" LIKE "
End If
Dim filterExpression As String
If [option] = " = " Then
filterExpression =
"(" + list.SelectedValue + [option] + txt.Text + ")"
Else
filterExpression =
"(" + list.SelectedValue + [option] + "'" + txt.Text + "%'" + ")"
End If
RadGrid1.MasterTableView.FilterExpression = filterExpression
RadGrid1.MasterTableView.Rebind()
End Sub
Protected Sub RadGrid1_UpdateCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.UpdateCommand
Dim item As GridEditableItem = TryCast(e.Item, GridEditableItem)
Dim editor As GridTextBoxColumnEditor = DirectCast(item.EditManager.GetColumnEditor("Email"), GridTextBoxColumnEditor)
Dim txtsid As TextBox
txtsid =
CType(e.Item.OwnerTableView.Items(e.Item.ItemIndex)("SUserID").Controls(0), TextBox)
Dim radioEnable = CType(item.FindControl("checkEnable"), RadioButton).Checked
SqlQry =
"select Email from SiteUsers where Email='" & editor.TextBoxControl.Text & "' and SuserId <> " & txtsid.Text
If oDB.ExecuteScaler(SqlQry) = "" Then
SqlQry =
"Update SiteUsers Set Email='" & editor.TextBoxControl.Text & "',userstatus=" & IIf(radioEnable = True, 0, 1) & " where SUserId = " & txtsid.Text
oDB.ExecuteNonQuery(SqlQry)
Else
lblMsg.Text =
"Email Already Exists"
End If
End Sub
Protected Sub RadGrid1_DeleteCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.DeleteCommand
Dim item As GridDataItem = DirectCast(e.Item, GridDataItem)
Try
hidUpdateuser.Value =
""
SqlQry =
"DELETE from SiteUsers where SuserId='" & e.Item.Cells(4).Text & "'"
oDB.ExecuteNonQuery(SqlQry)
hidUpdateuser.Value =
"Deleted"
Catch ex As Exception
RadGrid1.Controls.Add(
New LiteralControl("Unable to delete Employee. Reason: " + ex.Message))
e.Canceled =
True
End Try
End Sub
#
Region "******************** Ajax Function *****************************"
<Ajax.JavascriptMethod()> _
Function IsEmailExist(ByVal Email As String) As Boolean
Dim SqlQry As String = ""
SqlQry =
"Select * from SiteUsers where UPPER(Email) like '" & UCase(Email) & "'"
IsEmailExist = oDb.IsExist(SqlQry)
End Function
#
End Region
'Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
' If Page.IsValid Then
' Dim SqlQry As String = ""
' Dim Password As String = ""
' Dim SuserId As String = ""
' Password = NDCryption.Encrypt(txtPassword.Text)
' SqlQry = "insert into SiteUsers([ClientID], [Email], [Password], [UserStatus],[UserType],[Authenticate]) values (0,'" & txtEmail.Text.Trim & "','" & NDCryption.Encrypt(txtPassword.Text) & "',0," & UserType.PowerAdmin & "," & UserAuthenticate.CMSSite & ")"
' oDB.ExecuteNonQuery(SqlQry)
' Response.Redirect("ManagePAdmin.aspx?from=add&CID=" & Request.QueryString("CID") & "&SID=" & Request.QueryString("SID") & "&PID=" & Request.QueryString("PID"))
' End If
'End Sub
Protected Sub RadGrid1_PageIndexChanged(ByVal source As Object, ByVal e As Telerik.Web.UI.GridPageChangedEventArgs) Handles RadGrid1.PageIndexChanged
'e.Canceled = True
End Sub
Protected Sub RadGrid1_InsertCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.InsertCommand
Dim SqlQry As String = ""
Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem)
Dim txtEmail As GridTextBoxColumnEditor = DirectCast(editedItem.EditManager.GetColumnEditor("Email"), GridTextBoxColumnEditor)
Dim txtPassword As TextBox = CType(editedItem.FindControl("txtpwd"), TextBox)
'Password = NDCryption.Encrypt(txtPassword.Text)
SqlQry =
"insert into SiteUsers([ClientID], [Email], [Password], [UserStatus],[UserType],[Authenticate]) values (0,'" & txtEmail.TextBoxControl.Text.Trim & "','" & NDCryption.Encrypt(txtPassword.Text) & "'," & UserStatue.Enabled & "," & UserType.PowerAdmin & "," & UserAuthenticate.CMSSite & ")"
oDB.ExecuteNonQuery(SqlQry)
End Sub
Private Sub RadGrid1_ItemCreated(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemCreated
If (TypeOf e.Item Is GridDataItem) Then
Dim dataItem As GridDataItem = CType(e.Item, GridDataItem)
ElseIf (TypeOf e.Item Is GridEditableItem AndAlso e.Item.IsInEditMode) Then
Dim editedItem As GridEditableItem = CType(e.Item, GridEditableItem)
Dim editor As GridTextBoxColumnEditor = DirectCast(editedItem.EditManager.GetColumnEditor("Email"), GridTextBoxColumnEditor)
Dim cell As TableCell = DirectCast(editor.TextBoxControl.Parent, TableCell)
Dim validator As New RequiredFieldValidator
editor.TextBoxControl.ID =
"Email"
validator.ControlToValidate = editor.TextBoxControl.ID
validator.ErrorMessage =
"Enter Email Address"
'LiteralControl()
cell.Controls.Add(validator)
End If
End Sub
Protected Sub RadGrid1_ItemCommand(ByVal source As Object, ByVal e As Telerik.Web.UI.GridCommandEventArgs) Handles RadGrid1.ItemCommand
Select Case e.CommandName
Case RadGrid.InitInsertCommandName
e.Canceled =
True
e.Item.OwnerTableView.InsertItem()
Dim Grid As RadGrid = CType(source, RadGrid)
Grid.MasterTableView.ClearEditItems()
Dim insertedItem As GridEditableItem = e.Item.OwnerTableView.GetInsertItem()
Dim txtPassword As TextBox = CType(insertedItem.FindControl("txtpwd"), TextBox)
Dim txtRePassword As TextBox = CType(insertedItem.FindControl("txtrepwd"), TextBox)
Dim lblrepwd As Label = CType(insertedItem.FindControl("lblrepwd"), Label)
Dim lblpwd As Label = CType(insertedItem.FindControl("lblpwd"), Label)
Dim hplReset1 As HyperLink = CType(insertedItem.FindControl("hplReset1"), HyperLink)
hplReset1.Visible =
False
lblpwd.Visible =
True
lblrepwd.Visible =
True
txtPassword.Visible =
True
txtRePassword.Visible =
True
txtPassword.TextMode = TextBoxMode.Password
txtRePassword.TextMode = TextBoxMode.Password
Case RadGrid.EditSelectedCommandName
e.Item.OwnerTableView.IsItemInserted =
False
End Select
End Sub
End
Class